我正在尝试解析以下的JSon(我上次检查时已经过验证):
{
"top_level" = (
{
"download" = "http:/target.com/some.zip";
"other_information" = "other info";
"notes" = (
{
obj1 = "some text";
obj2 = "more notes";
obj3 = "some more text still";
}
);
title = "name_of_object1";
},
{
"download" = "http:/target.com/some.zip";
"other_information" = "other info";
"notes" = (
{
obj1 = "some text";
obj2 = "more notes";
obj3 = "some more text still";
}
);
title = "name_of_object2";
},
{
"download" = "http:/target.com/some.zip";
"other_information" = "other info";
"notes" = (
{
obj1 = "some text";
obj2 = "more notes";
obj3 = "some more text still";
}
);
title = "name_of_object3";
}
);
}
我尝试使用以下内容:
NSDictionary *myParsedJson = [myRawJson JSONValue];
for(id key in myParsedJson) {
NSString *value = [myParsedJson objectForKey:key];
NSLog(value);
}
错误:
-[__NSArrayM length]: unrecognized selector sent to instance 0x6bb7b40
问题: 在我看来,JSon值使myParsedJson对象成为NSArray而不是NSDictionary。
如何遍历名为name_of_object的对象并访问每个嵌套字典?我是以正确的方式去做的吗?
答案 0 :(得分:2)
NSLog的第一个参数必须是一个字符串。试试这个:
NSLog(@"%@", value);
答案 1 :(得分:1)
您的value
不是字符串,只是因为您输入了它。
根据您发布的结构,您将拥有一个数组作为您的
顶级对象。
NSDictionary *myParsedJson = [myRawJson JSONValue];
for(id key in myParsedJson) {
id value = [myParsedJson objectForKey:key];
NSLog(@"%@", value);
}
NSLog中的%@
语法导致-description
方法
呼吁价值;此方法返回NSString。这意味着
您可以做NSLog([value description]);
但是这样做
一般不是一个好主意。 (有人可以制作可能导致您的应用崩溃的恶意输入。)