您的位置:首页 > Web前端 > JavaScript

JSON解析

2013-09-25 00:00 459 查看
[plain]
view plain
copy
print
?

<span style="font-size:14px">{

"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"

}

}

}</span>

首先什么是
json?

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


举个栗子:

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

以下:

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

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

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

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

--key的value是一个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"]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSON 解析