{
"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"]} --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文件的路径就通过命令行参数导入的。在跳出新的页面选择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"]);