JSON解析

34 篇文章 0 订阅
14 篇文章 0 订阅

{
"students":[
		{
			"name":"stu1",
			"age":"20"
		},
		{
			"name":"stu2",
			"age":"22"
		}
	],
"teachers":[
		{
			"name":"tea1",
			"age":"30"
		},
		{
			"name":"tea2",
			"age":"33"
		}
	],
"subjects":{
		"C":{
				"subID":"1",
				"score":"2",
				"hour":"80"
			},
		"objective-c":{
				"subID":"2",
				"score":"3",
				"hour":"60"
			}
	}
}

首先什么是 json?

Json的本质就是字符串并且是一组有固定格式的字符串,      

举个栗子:

{"key":"value","key":"value"} --这就是一组标准的,基本的json

以下:

       1、["json","string"] --这是个字符串数组

        2、{"key":["json","string"]} --keyvalue是一个字典数组

       3、[{"key":"value","key":"value"},{"key":"value","key":"value"}] --json数组

         {"key" : [{"key":"value","key":"value"},{"key":"value","key":"value"}]}

            --keyvalue是一个json数组

红色字符数组,绿色字典数组


通过键值对 , 数组和字符串来整理 / 封装的用于表示数据的字符串 json 字符串可以解析成为 oc NSDictionary

这个用法需要引入命令行参数,json文件的路径就通过命令行参数导入的。在跳出新的页面选择Run XXX(XXX为工程名),之后选择Arguments选项,在Arguments Passed On Launch中添加一条新内容,为你的json文件的路劲名包括。

一、这个是在OC中解析json文件:

NSString *path = [NSStringstringWithUTF8String:argv[1]];        

       NSData *data = [NSDatadataWithContentsOfFile:path];

        NSDictionary* jsonObject = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

       NSLog(@"%@",[[jsonObjectobjectForKey:@"subjects"]objectForKey:@"C"]);

     二、下面这个实在iphone中,实现json解析:

NSString *plistPath = [[NSBundlemainBundle]pathForResource:@"demo"ofType:@"json"];

 NSData *data = [NSDatadataWithContentsOfFile:plistPath];

    NSDictionary* jsonObject = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

     NSLog(@"%@",[[jsonObjectobjectForKey:@"subjects"]objectForKey:@"C"]);

NSArray *ages = [jsonObjectvalueForKeyPath:@"teachers.age"];

        NSLog(@"%@",ages);

Json的小技巧:        

        //最老的老师多少岁

        NSLog(@"%@",[jsonObject valueForKeyPath:@"teachers.@max.age"]);

        //平均多大了?

        NSLog(@"%@",[jsonObject valueForKeyPath:@"teachers.@avg.age"]);

        //最小

        NSLog(@"%@",[jsonObject valueForKeyPath:@"teachers.@min.age"]);

        //总共多少岁

        NSLog(@"%@",[jsonObjectvalueForKeyPath:@"teachers.@sum.salary"]);

        //总共几个老师?

        NSLog(@"%@",[jsonObjectvalueForKeyPath:@"teachers.@count"]);//teachers是一个数组,@count,数组的元素个数

        NSLog(@"%@",[jsonObject valueForKeyPath:@"teachers.count"]);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值