考虑这个 JSON 字符串。
{
"arrayOfData": [
{
"body": "123",
"date": 1333023644,
"mid": 12,
"read_state": 0
},
{
"body": ": )",
"date": 1332968570,
"mid": 4,
"read_state": 1
},
{
"body": "1234",
"date": 1331844024,
"mid": 1,
"read_state": 1
}
]
}
这是一个有效的 JSON 字符串。您可以使用http://jsonlint.com/检查有效性
假设您的 JSON 数据位于jsonData
NSData 类型的变量中。使用SBJSON,您可以像解析 JSON
NSDictionary *jsonDictionary = [jsonData JSONValue];
NSArray *array = [jsonDictionary objectForKey:@"arrayOfData"];
NSMutableArray *result = [[NSMutableArray alloc]init];
for(NSDictionary *dict in array){
[result addObject:[dict objectForKey:@"body"]];
}
在此操作之后,键的所有值body
都将在结果数组中。
如果“3”是数组计数,则您可能已将该值包含在 JSON 中,如下所示:
{
"numberOfElementsInArray": 3,
"arrayOfData": [
{
"body": "123",
"date": 1333023644,
"mid": 12,
"read_state": 0
},
{
"body": ": )",
"date": 1332968570,
"mid": 4,
"read_state": 1
},
{
"body": "1234",
"date": 1331844024,
"mid": 1,
"read_state": 1
}
]
}
请参阅有关 JSON 的本教程。你必须读过这个网站才能理解 JSON
由 Hot Licks 添加
你不明白的是,原来的 JSON 本质上是这样的:
[
3,
{
"body": "123",
"date": 1333023644,
"mid": 12,
"read_state": 0
},
{
"body": ": )",
"date": 1332968570,
"mid": 4,
"read_state": 1
},
{
"body": "1234",
"date": 1331844024,
"mid": 1,
"read_state": 1
}
]
它的格式不同,因为它是一个 NSLog 对象转储,而不是原始 JSON 源。完全合法的 JSON。