在objective-c中从“JSON-style” NSString中获取正确的值

Posted

技术标签:

【中文标题】在objective-c中从“JSON-style” NSString中获取正确的值【英文标题】:Obtaining right value from "JSON-style" NSString in objective-c 【发布时间】:2011-05-11 23:59:01 【问题描述】:

我正在尝试从下面的 JSON 样式的 NSString 中获取 NSString“Bonjour”:

[[["Bonjour","Hello","",""]],,"en",,[["Bonjour",[4],1,0,1000,0,1,0]],[["Hello",4,[["Bonjour",1000,1,0]],[[0,5]],"Hello"]],,,,2]

假设结果是上面的 NSString,实现以下代码会给我 null

NSDictionary *td = [result JSONValue];
NSLog(@"\n%@", td);  

如何从这个 JSON 样式的字符串中获取“Bonjour”?

【问题讨论】:

使用 http://jsonlint.com 验证您的 JSON 字符串。您会注意到它不是有效的 JSON,因为 ,, 你能告诉我们更多关于你想要达到的目标吗?你的弦是从哪里来的?为什么要从字符串中提取“Bonjour”? 【参考方案1】:

我认为这不是格式良好的 JSON。一方面,这将返回一个数组..(由 [] 包围,而不是 )。此外,您的数组有空条目(',' 没有任何分隔它们)

你在使用 SBJSON 吗?

如果你查阅 NSObject+JSON.h,你会看到这条评论:

/// Returns the NSDictionary or NSArray represented by the receiver's JSON representation, or nil on error

出现错误。检查你的控制台输出,你应该会看到一个错误。

【讨论】:

另外,不确定您要达到的目标。你为什么要从你发布的内容中提取这个字符串?【参考方案2】:

我有点不确定您发布的数组是 JSON 样式的 NSString,但我相信您返回的 NSDictionary 基本上应该完全按照它们在 JSON 原始文件中出现的方式存储键值对。例如,如果您有类似 JSON:

key: "value"

然后你会得到一个 NSDictionary,其中的“key”键与“value”的值匹配。

也许您的 NSDictionary 为空的原因是因为您没有传递JSONValue 可以理解的东西?

【讨论】:

以上是关于在objective-c中从“JSON-style” NSString中获取正确的值的主要内容,如果未能解决你的问题,请参考以下文章

尝试在objective-c中从objects[0]插入nil对象

无法在 Xcode 控制台中从 Objective-C 记录 Swift Singletons

在 Objective-C 中从字符串中删除空格

如何在 Objective-C 中从 mysql 数据库中填充 NSArray?

如何在 iOS 7 的 UIWebView 中从 JavaScript 调用 Objective-C?

我需要在 iOS 应用程序中从 SpriteKit GameViewController 转换为常规视图控制器(Objective-C)