1 前言
通过 NSJSONSerialization 这个类的 JSONObjectWithData:options:error:方法来实现,把JSON 数据解析出来放在数据或者字典里面保存。

2 代码示例
TestDemo.m

[plain]
-(void)convseFromJson{ 
    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
    [dictionary setValue:@"Anthony" forKey:@"First Name"]; 
    [dictionary setValue:@"Robbins" forKey:@"Last Name"]; 
    [dictionary setValue:[NSNumber numberWithUnsignedInteger:51] forKey:@"Age"]; 
    NSArray *arrayOfAnthonysChildren = [[NSArray alloc] initWithObjects: 
                                        @"Anthony's Son 1", 
                                        @"Anthony's Daughter 1", 
                                        @"Anthony's Son 2", 
                                        @"Anthony's Son 3", 
                                        @"Anthony's Daughter 2", nil]; 
    [dictionary setValue:arrayOfAnthonysChildren forKey:@"children"]; 
    NSError *error = nil; 
    NSData *jsonData = [NSJSONSerialization 
                        dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; 
    if ([jsonData length] > 0 && error == nil){ 
        NSLog(@"Successfully serialized the dictionary into data."); 
        /* Json转数组/字典 */ 
        error = nil; 
        //转换方法 
        id jsonObject = [NSJSONSerialization 
                         JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments 
                         error:&error]; 
        if (jsonObject != nil && error == nil){ 
            NSLog(@"Successfully deserialized..."); 
            //如果jsonObject是字典类 
            if ([jsonObject isKindOfClass:[NSDictionary class]]){ 
                NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject; 
                NSLog(@"Dersialized JSON Dictionary = %@", deserializedDictionary); 
            } 
            //如果jsonObject是数组类 
            else if ([jsonObject isKindOfClass:[NSArray class]]){ 
                NSArray *deserializedArray = (NSArray *)jsonObject; 
                NSLog(@"Dersialized JSON Array = %@", deserializedArray); 
            } else { 
                NSLog(@"I can't deal with it"); 
            } 
        } 
        else if (error != nil){ 
            NSLog(@"An error happened while deserializing the JSON data."); } 
    } 
    else if ([jsonData length] == 0 &&error == nil){ 
        NSLog(@"No data was returned after serialization."); 
    } 
    else if (error != nil){ 
        NSLog(@"An error happened = %@", error); 
    } 
}

-(void)convseFromJson{
    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
    [dictionary setValue:@"Anthony" forKey:@"First Name"];
    [dictionary setValue:@"Robbins" forKey:@"Last Name"];
    [dictionary setValue:[NSNumber numberWithUnsignedInteger:51] forKey:@"Age"];
    NSArray *arrayOfAnthonysChildren = [[NSArray alloc] initWithObjects:
                                        @"Anthony's Son 1",
                                        @"Anthony's Daughter 1",
                                        @"Anthony's Son 2",
                                        @"Anthony's Son 3",
                                        @"Anthony's Daughter 2", nil];
    [dictionary setValue:arrayOfAnthonysChildren forKey:@"children"];
    NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization
                        dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
    if ([jsonData length] > 0 && error == nil){
        NSLog(@"Successfully serialized the dictionary into data.");
        /* Json转数组/字典 */
        error = nil;
        //转换方法
        id jsonObject = [NSJSONSerialization
                         JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments
                         error:&error];
        if (jsonObject != nil && error == nil){
            NSLog(@"Successfully deserialized...");
            //如果jsonObject是字典类
            if ([jsonObject isKindOfClass:[NSDictionary class]]){
                NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;
                NSLog(@"Dersialized JSON Dictionary = %@", deserializedDictionary);
            }
            //如果jsonObject是数组类
            else if ([jsonObject isKindOfClass:[NSArray class]]){
                NSArray *deserializedArray = (NSArray *)jsonObject;
                NSLog(@"Dersialized JSON Array = %@", deserializedArray);
            } else {
                NSLog(@"I can't deal with it");
            }
        }
        else if (error != nil){
            NSLog(@"An error happened while deserializing the JSON data."); }
    }
    else if ([jsonData length] == 0 &&error == nil){
        NSLog(@"No data was returned after serialization.");
    }
    else if (error != nil){
        NSLog(@"An error happened = %@", error);
    }
}
控制台结果

2013-05-13 17:26:15.726 FromJsonTest[4944:303] Successfully serialized the dictionary into data.

2013-05-13 17:26:15.728 FromJsonTest[4944:303] Successfully deserialized...

2013-05-13 17:26:15.728 FromJsonTest[4944:303] Dersialized JSON Dictionary = {

Age = 51;

"First Name" = Anthony;

"Last Name" = Robbins;

children =     (

"Anthony's Son 1",

"Anthony's Daughter 1",

"Anthony's Son 2",

"Anthony's Son 3",

"Anthony's Daughter 2"

);

最新文章

  1. TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
  2. UVa #11582 Colossal Fibonacci Numbers!
  3. .net windows 服务创建、安装、卸载和调试
  4. float浮动与清除浮动
  5. [ES6] 14. Generator -- 1. yield & next()
  6. phpcms v9和discuz X3.1实现同步登陆退出论坛(已实现)
  7. ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)
  8. java遍历hashMap、hashSet、Hashtable
  9. orale 查询每年、每月、每日统计量的sql语句
  10. value toDF is not a member of org.apache.spark.rdd.RDD
  11. html-简单的简历表制作
  12. 第七篇-列表式App:ListActivity及ListView
  13. My strength (C-A-R)
  14. 从一个点的长度是多少说起(Talking started from the length of a point on the real number line)
  15. python 翻转棋(othello)
  16. 设计模式之初识IoC/DI(六)
  17. 大话FLASH和EEPROM
  18. [vue]vue-book
  19. Thinkphp整合各个功能
  20. Google的跨平台开发高质量原生 UI 的移动 SDK---Flutter免费且开源

热门文章

  1. margin隐藏最后的切割线
  2. [Ramda] Convert a QueryString to an Object using Function Composition in Ramda
  3. 【codeforces 755A】PolandBall and Hypothesis
  4. js进阶 10-6 jquery中的属性选择器有哪些
  5. [Angular] Using the platform agnostic Renderer & ElementRef
  6. WatchDog工作原理
  7. WPF 针对数据源某个属性进行排序
  8. 【BZOJ 1017】 [JSOI2008]魔兽地图DotR
  9. 【codeforces 779A】Pupils Redistribution
  10. Linux 增值服务中删除,自己主动和国家执行