我已经发布了这个以寻求帮助,但不幸的是,他们都没有为我工作......
有人在那里帮助我..请.....如何解析这个JSON提要。我想获得所有项目,如'id','title','teaser','body','fid,'filename','filepath'
.........
{
"data":{
"mat_149":{
"id":"149",
"title":"The closing of 40% profit within 9 month",
"teaser":"profit within 9 months only which is equal to 52% annual profit",
"body":" The auction was presented in a very high and commercial lands.\u000d\u000a",
"files":{
"911":{
"fid":"911",
"filename":"22.JPG",
"filepath":"http://mysite/files/22_0.JPG"
}
}
},
"mat_147":{
"id":"147",
"title":"Company launches the city ",
"teaser":"demands for distinguished lands.",
"body":" The area size is quare meters This is evident through projects and many other projects.\u000d\u000a\u000d\u000a",
"files":{
"906":{
"fid":"906",
"filename":"2D7z.jpg",
"filepath":"http://mysite/dlr/files/2D7Z.jpg"
}
}
},
"mat_link":"mysite.com/"
}
}
我正在使用json-framework解析它:
NSString *response = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding] ;
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *data = (NSDictionary *) [parser objectWithString:response error:nil];
NSLog(@"Data : %@", [data valueForKey:@"data"] );
我正在获取数据:
NSLog(@"Data : %@", [data objectForKey:@"data"] );
我想得到所有物品'id','title','teaser','body','fid,'filename','filepath'
.........请帮助我......请........
NSString *response = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding] ;
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *data = (NSDictionary *) [parser objectWithString:response error:nil];
NSDictionary *filedict = [data valueForKey:@"data"];
for(id key in filedict)
{
NSDictionary *files = [filedict valueForKey:key];
NSLog(@"File ------------------- = %@",files);
}
但问题是。有时它的说法
File ------------------- = "<null>";
我必须做什么..帮帮我......
答案 0 :(得分:3)
您可以使用此JSON解析器https://github.com/stig/json-framework/ 然后你就可以这样使用它了:
NSDictionary *jsonData = [jsonString JSONValue];
//Get the data object
NSArray *data = (NSArray*)[jsonData objectForKey=@"**data**"];
现在您可以从数组对象访问数据。
遍历数据对象
for(int i=0;i<[data count];i++){
NSDictionary *element = (NSDictionary *)[elements objectAtIndex:i];
NSDictionary *user = (NSDictionary*)[element objectForKey:[[element allKeys] objectAtIndex:0]];
NSString *ID = [user objectForKey:@"id"];
NSString *title = [user objectForKey:@"title"];
//...
}
注意您的对象键对于元素数组ex中的每个对象都不同。 mat_157与mat_156相比,因此无法获得统一的键值对象。这就是为什么你必须获得每个元素的第一个键:
NSDictionary *user = (NSDictionary*)[element objectForKey:[[element allKeys] objectAtIndex:0]];
答案 1 :(得分:1)
数据的最后一项中的文件为空。
“mat_link”: “mysite.com /”
此下没有定义任何文件元素。
答案 2 :(得分:0)
这很容易,你收到一个包含(主要)字典对象的字典。您可以通过对象的符号来看到这一点,例如:
带字符串的 字典: "aKey":"aValue"
包含键'aKey'的字符串。
带字典的字典: "aDict":{"aKey":"aValue"}
是一个名为'aDict'的字典,其中包含一个名为'aKey'的密钥。
因此,如果我们记住这一点,我们可以毫不费力地解析您的JSON字典。
NSDictionary *data = (NSDictionary *) [parser objectWithString:response error:nil];
NSDictionary *dict = [data valueForKey:@"data"];
NSDictionary *mat = [dict valueForKey:@"mat_147"];
NSString *id = [mat valueForKey:@"id"];
NSString *title = [mat valueForKey:@"title"];
我猜valueForKeyPath:
也可用于导航树。对于所有 mat _ ### 对象,您可能希望使用枚举器遍历每个 mat _ ### 字典。