Objective-C Json 使用

标签: objective json | 发表时间:2014-11-08 19:58 | 作者:fansongy
出处:http://blog.csdn.net

Objective-c json

通过使用NSJSONSerialization 可以Json与Foundation的相互转换。下面具体介绍 Objective-c json 的使用。

Json To Fundation

使用 JSONObjectWithData 可以将 Json 转化为 Foundation。Json的顶层可以是 {} 或  []因此可以有 NSDictionary 和 NSArray 两种格式。读取使用 ObjectForKey 返回对应的对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
NSString* items = @"{"items":["item0","item1","item2"]}";
 
NSData *data= [items dataUsingEncoding:NSUTF8StringEncoding];
 
NSError *error = nil;
 
id jsonObject = [NSJSONSerialization JSONObjectWithData:data
                    options:NSJSONReadingAllowFragments
                    error:&error];
 
if ([jsonObject isKindOfClass:[NSDictionary class]]){
 
    NSDictionary *dictionary = (NSDictionary *)jsonObject;
 
    NSLog(@"Dersialized JSON Dictionary = %@", dictionary);
 
}else if ([jsonObject isKindOfClass:[NSArray class]]){
 
    NSArray *nsArray = (NSArray *)jsonObject;
 
    NSLog(@"Dersialized JSON Array = %@", nsArray);
 
} else {
 
    NSLog(@"An error happened while deserializing the JSON data.");
 
}
 
NSDictionary *dict = (NSDictionary *)jsonObject;
 
NSArray* arr = [dict objectForKey:@"items"];
NSLog(@"list is %@",arr);
 

Fundation To Json

使用 dataWithJsonObject 可以将 Fundation 转换为 Json。其中 options:NSJSONWritingPrettyPrinted 是分行输出json ,无空格输出使用 option:kNilOptions。

下面这段代码是IOS内购获取商品列表。获取后,将内容添加到Json中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
NSArray *myProduct = response.products;
NSDictionary *myDict;
NSMutableDictionary *dict = [NSMutableDictionary
                                dictionaryWithCapacity: 4];
 
for(int i  = 0;i<myProduct.count;++i)
{
 
    //NSLog(@"----------------------");
    //NSLog(@"Product title: %@" ,[myProduct[i] localizedTitle]);
    //NSLog(@"Product description: %@" ,[myProduct[i] localizedDescription]);
    //NSLog(@"Product price: %@" ,[myProduct[i] price]);
    //NSLog(@"Product id: %@" ,[myProduct[i] productIdentifier]);
 
    myDict = [NSDictionary dictionaryWithObjectsAndKeys:
                    [myProduct[i] localizedTitle], @"title",
                    [myProduct[i] localizedDescription], @"desc",
                    [myProduct[i] price], @"price",
                    [myProduct[i] productIdentifier], @"product", nil];
 
    [dict setValue: myDict forKey: [myProduct[i] productIdentifier]];
}
if([NSJSONSerialization isValidJSONObject:dict])
{
    NSError* error;
    NSData *str = [NSJSONSerialization dataWithJSONObject:dict
                        options:kNilOptions error:&error];
    NSLog(@"Result: %@",[[NSString alloc]initWithData:str
                            encoding:NSUTF8StringEncoding]);
}
else
{
    NSLog(@"An error happened while serializing the JSON data.");
}      
 


本文出自: [  松阳的博客 ] / [ blog.csdn.net/fansongy ] 禁止用于商业用途 转载请注明出处

原文链接:  http://www.songyang.net/objective-c-json/


作者:fansongy 发表于2014-11-8 11:58:53 原文链接
阅读:76 评论:0 查看评论

相关 [objective json] 推荐:

Objective-C Json 使用

- - CSDN博客移动开发推荐文章
通过使用NSJSONSerialization 可以Json与Foundation的相互转换. 下面具体介绍 Objective-c json 的使用. 使用 JSONObjectWithData 可以将 Json 转化为 Foundation. Json的顶层可以是 {} 或  []因此可以有 NSDictionary 和 NSArray 两种格式.

[翻译]学习 Objective-C

- Season - Some reminiscences, some memories
接到 ceo 通知,招聘、培训都不用我再负责了,所有人从“闲人”要变成“战斗人员”. 于是撸撸袖子,潜心学习 cocoa 和 Object-c. 不经意看到这篇,好文,兴起,翻译之⋯⋯. 原文地址:http://cocoadevcentral.com/d/learn_objectivec/. Objective-C 是编写 Mac 软件的主要语言.

json简介

- - ITeye博客
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成. 它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集. JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式.

【Json扫盲篇】

- $n0wd0wn - 博客园-首页原创精华区
Json是数据交换的一种格式,与XML类似,但也有不同. 由于Json的轻便性,跨平台性和易于阅读,项目中经常用到. 所以说:Json是一种轻量级的数据交换格式. Json最简单的表现形式就键值对(key/value pairs),比如:. Json数组可以用来表示一个键key对应多个值value的情况,把这个value用{}包起来.

JSON与XML

- - CSDN博客推荐文章
   目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信大家都很熟悉. XML不仅能处理数字和文字等经典的数据,还可以管理文件,格式化,图像,音频,视频,以及更多.  JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成. 如今,我们经常会面临创建数据文件时,JSON和XML之间的选择.

Android——JSON使用

- - CSDN博客推荐文章
        JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.  Name:Value  格式:. 一个object可以由一个或多个无序的这种组合 组成:. 2.有序的(array):. array 是 值(value) 的有序集合,格式:. array的值(alue) 可以是是双引号括起来的字符串(string)、数值(number)、 true、 false、  null、 对象(object)或者 数组(array).

XML和JSON

- - 四火的唠叨
不久前看到一个讨论帖,说的是XML和JSON的比较,说着说着后来就变成了JSON到底比XML牛逼在哪里. 不吹不黑,客观地来比较一下二者的异同. 有的情况下是的,但也不一定,比较这样的片段:. 二者信息量几乎均等,XML看起来并不显得多么冗余. 有恰当的编辑器,二者都可以有比较美观的缩进表达. 当然,也有很多情况我们可以看到XML要比JSON啰嗦(有人说JSON是fat-free alternative to XML),比如XML写这样的东西:.

一些Objective-C学习资源

- 刘潇 - 博客园-首页原创精华区
    想学习Objective-C的童鞋们注意咯,推荐一些学习资料给大家,希望对您有用.    Learn Objective-C   很基础很简洁.    Learn Objective-C(中文版)  E文不好的可以看看咯.    Objective-C 2.0特性与运行时编程 一网友的笔记熟悉语法特性.

年度编程语言锁定Objective-C

- ndv - 《程序员》杂志官网
虽然2011年才刚过半,但随着iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新,从市场占有的趋势来看,Objective-C成为年度编程语言无疑. TIOBE编程语言排行榜每年初都将统计评出上年度的最佳编程语言大奖,获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩.

IOS上objective-c开发调试方法

- - 瞄的技术
常用总结,陆续补充,免得忘记. 1.如果问题是可以复现的,用Breakpoint可以跟踪出错位置在进行分析. 2.如果使用Breakpoint无法查出crash问题,问题无法复现,可以用profile记录运行过程中的内存,cpu使用,看是否在某一功能突然升高,不稳定. 3.可以通过将所有的NSLOG控制台输出截获到文件输出,在真机上运行来排查在模拟器上无法复现的问题.