Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone SBJson解析尝试——目标C_Iphone_Objective C_Ios_Ipad_Sbjson - Fatal编程技术网

Iphone SBJson解析尝试——目标C

Iphone SBJson解析尝试——目标C,iphone,objective-c,ios,ipad,sbjson,Iphone,Objective C,Ios,Ipad,Sbjson,我正在尝试解析以下JSon(我想上次检查时已经验证过): 我尝试使用以下方法: NSDictionary *myParsedJson = [myRawJson JSONValue]; for(id key in myParsedJson) { NSString *value = [myParsedJson objectForKey:key]; NSLog(value); } 错误: -[__NSArrayM length]: unrecognized selector sen

我正在尝试解析以下JSon(我想上次检查时已经验证过):

我尝试使用以下方法:

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的对象并访问每个嵌套字典?我这样做对吗?

NSLog的第一个参数必须是字符串。试试这个:

NSLog(@"%@", value);

NSLog的第一个参数必须是字符串。试试这个:

NSLog(@"%@", value);

您的
不是字符串,因为您是这样键入的。 根据你发布的结构,你将有一个数组作为你的 顶级对象

NSDictionary *myParsedJson = [myRawJson JSONValue];
for(id key in myParsedJson) {
    id value = [myParsedJson objectForKey:key];
    NSLog(@"%@", value);
}
NSLog中的
%@
语法导致
-description
方法无效 呼唤价值;此方法返回一个NSString。这意味着 您可以执行
NSLog([value description])但这是

一般来说,这不是个好主意。(有人可能精心设计恶意输入,使你的应用程序崩溃。)

你的
值不是字符串,只是因为你输入了字符串。
根据你发布的结构,你将有一个数组作为你的
顶级对象

NSDictionary *myParsedJson = [myRawJson JSONValue];
for(id key in myParsedJson) {
    id value = [myParsedJson objectForKey:key];
    NSLog(@"%@", value);
}
NSLog中的
%@
语法导致
-description
方法无效 呼唤价值;此方法返回一个NSString。这意味着 您可以执行
NSLog([value description])但这是

一般来说,这不是个好主意。(有人可能会精心设计恶意输入,使你的应用程序崩溃。)

Jesse已经给出了我认为正确的答案,我将发表标准的间接相关评论:由于iOS 5苹果提供了内置JSON解析器;您使用它可能有一个很好的理由,但不要期望SBJSON解析器将来会得到很好的支持;“我一点也不知道。”汤米,你怎么会这么想?我是SBJson的作者,无意停止支持它。@StigBrautset关于用法的简单推测;你会发现你的工作(虽然很好)不再有一个强大的用例,你现在的使用率会显著降低。当项目不再如此重要时,大多数作者会将他们的才华再投资于一个新项目。“你显然是一个有天赋的人,所以我的猜测是,你将更有可能专注于人们更可能使用的东西。”汤米承认,但现在它已经相当成熟,实际上不需要太多的努力来维护。此外,它还具有苹果解析器所不具备的功能,因此即使在iOS 5及以上版本上,它也有一席之地;您使用它可能有一个很好的理由,但不要期望SBJSON解析器将来会得到很好的支持;“我一点也不知道。”汤米,你怎么会这么想?我是SBJson的作者,无意停止支持它。@StigBrautset关于用法的简单推测;你会发现你的工作(虽然很好)不再有一个强大的用例,你现在的使用率会显著降低。当项目不再如此重要时,大多数作者会将他们的才华再投资于一个新项目。“你显然是一个有天赋的人,所以我的猜测是,你将更有可能专注于人们更可能使用的东西。”汤米承认,但现在它已经相当成熟,实际上不需要太多的努力来维护。此外,它还具有苹果的解析器所没有的功能,因此即使在iOS 5及更高版本上它也有一席之地。但它已经是一个字符串,因为value引用了nsstring对象?。。。。(运行它一段时间后…它实际工作)等等。。。为什么我需要将字符串转换为字符串?这不是转换。NSLog接受格式字符串,而不是字符串变量。另外,
%@
也不表示“字符串”。它的意思是“对象”,只是为了澄清@Borrden的说法:在变量中保留格式字符串是完全正确的,但如果您试图打印您无法控制的数据,则不使用格式字符串是不安全的,因为有人可能会制作一个格式字符串,这会使您的应用程序崩溃。但它已经是一个字符串,因为值引用了nsstring对象?。。。。(运行它一段时间后…它实际工作)等等。。。为什么我需要将字符串转换为字符串?这不是转换。NSLog接受格式字符串,而不是字符串变量。另外,
%@
也不表示“字符串”。它的意思是“object”,只是为了澄清@borrrden的说法:在变量中保留格式字符串是完全正确的,但如果您试图打印您无法控制的数据,则不使用格式字符串是不安全的,因为有人可能会设计一个格式字符串,从而使您的应用程序崩溃。