JSON解析问题
Posted
技术标签:
【中文标题】JSON解析问题【英文标题】:JSON Parsing Issue 【发布时间】:2014-05-13 07:11:03 【问题描述】:您好,我是 ios 开发的新手。我正在尝试解析 JSON 响应。以下是响应的顶部:
Table =
Rows =
results = (
Cells =
results = (
Key = Rank;
Value = "6.251145362854";
ValueType = "Edm.Double";
"__metadata" =
type = "SP.KeyValue";
;
,
Key = DocId;
Value = 978473;
ValueType = "Edm.Int64";
"__metadata" =
type = "SP.KeyValue";
;
,
Key = WorkId;
Value = 978473;
ValueType = "Edm.Int64";
"__metadata" =
type = "SP.KeyValue";
;
,
Key = Title;
Value = "Vneea Ready!";
ValueType = "Edm.String";
"__metadata" =
type = "SP.KeyValue";
;
,.........................
现在我正在使用
NSError *error;
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];
NSDictionary *results = jsonObject[@"Table"][@"Rows"][@"results"];
所以我能够将它完善到这里,但后来我使用了
NSDictionary *results = jsonObject[@"Table"][@"Rows"][@"results"][@"Cells"];
当我为Cells
和results
走得更远时,它给了我Empty element Error
,
参考这篇帖子JSON parsing using NSJSONSerialization in iOS后,似乎“(”在响应中表示一个数组,但它对我不起作用。有人可以帮助我吗?
【问题讨论】:
你能给你的网址吗,我给你完整的答案 这看起来不像 json。每个结果条目都有“;”而不是“,”,所有“=”都应该是“:” 请指定解析后要从字典中获取哪个值? 我想从字典中得到的标题值。 【参考方案1】:results
是一个数组,而不是字典,因此您无法通过名称访问其内容。不过,您的 JSON 格式看起来不太好,因为 Key
应该是一个字符串(“Title”而不是 Title)。
结果数组中的每个元素都是一个字典,因此要获取与Title
对应的Value
,您可以使用
NSArray *results=jsonObject[@"Table"][@"Rows"][@"results"];
NSDictionary *result=[results objectAtIndex:0]; // access the first result
for (NSDictionary *result in results)
if ([result[@"Key"] isEqualToString:@"Title"])
NSLog(@"The value of Title is %@",result[@"Value"]);
break;
【讨论】:
以上是关于JSON解析问题的主要内容,如果未能解决你的问题,请参考以下文章