关于JSON数据和苹果的JSON数据解析类NSJSONSerialization

本文详细介绍了JSON数据的基本概念、如何在iOS中使用JSON数据进行解析及实例演示,包括简单JSON数据到复杂数据结构的转换,并通过NSJSONSerialization类提供了高效的JSON数据解析方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是JSON数据:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

简单JSON数据:可以用下面这样的 JSON 表示 "名称 / 值对" :{ "firstName": "Brett" }

复杂一点的JSON数据:{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

     更复杂点的JSON数据:

{ "programmers": [{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
],
"authors": [{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
] }

上面的JSON数据转化成iOS里面的字典后,显示的形式是这样的:

{
    authors =     (
                {
            firstName = Isaac;
            genre = "science fiction";
            lastName = Asimov;
        },
                {
            firstName = Tad;
            genre = fantasy;
            lastName = Williams;
        },
                {
            firstName = Frank;
            genre = "christian fiction";
            lastName = Peretti;
        }
    );
    musicians =     (
                {
            firstName = Eric;
            instrument = guitar;
            lastName = Clapton;
        },
                {
            firstName = Sergei;
            instrument = piano;
            lastName = Rachmaninoff;
        }
    );
    programmers =     (
                {
            email = aaaa;
            firstName = Brett;
            lastName = McLaughlin;
        },
                {
            email = bbbb;
            firstName = Jason;
            lastName = Hunter;
        },
                {
            email = cccc;
            firstName = Elliotte;
            lastName = Harold;
        }
    );
}

大致来说,就是大括号和中括号组成的键值对,大括号=字典,中括号=数组。

iOS JSON数据的解析:

iOS中如果要使用JSON数据,必须先解析成OC的字典,然后一步一步拆分成自己想要的数据,在ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。

  NSJSONSerialization提供了将JSON数据转换为Foundation对象(一般都是NSDictionary和NSArray)和Foundation对象转换为JSON数据(可以通过调用isValidJSONObject来判断Foundation对象是否可以转换为JSON数据)。

NSDictionary *dic_1 = [NSJSONSerialization JSONObjectWithData:[parseJason dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil];
这个苹果自带的类比较简单,就几个方法和属性,但是它还可以反转换,就是可以把字典里的形式的值转化成JSON数据的NSSting。

NSDictionary *song = [NSDictionary dictionaryWithObjectsAndKeys:@"i can fly",@"title",@"4012",@"length",@"Tom",@"Singer", nil];
    if ([NSJSONSerialization isValidJSONObject:song])
    {
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:song options:NSJSONWritingPrettyPrinted error:&error];
        NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        NSLog(@"json data:%@",json);
    }
转化后的形式:
json data:{
  "Singer" : "Tom",
  "title" : "i can fly",
  "length" : "4012"
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值