解析 JSON 字典时调试器中的不同类型

Posted

技术标签:

【中文标题】解析 JSON 字典时调试器中的不同类型【英文标题】:Different types in debugger when parsing JSON Dictionary 【发布时间】:2015-03-12 00:21:27 【问题描述】:

我将 JSON 数组保存为 var ingredients: [Dictionary<String,AnyObject>]

JSON 数组的字典键是字符串,值可以是 Int 或 String。

然后我试图解析我的字典数组,但我在调试器中看到了一些奇怪的结果。 当“serving_count”的值为“0.5”时,调试器说它是一个_NSCFNumber,但是当它的值为“1.0”时它说它是一个_NSCFString。我不知道为什么当 JSON 显然是如下所示的字符串时它会选择数字。 谢谢


 "serving_count" = "1.0";


 "serving_count" = "0.5";  

【问题讨论】:

【参考方案1】:

调试器输出


 "serving_count" = "1.0";


 "serving_count" = "0.5";  

并没有过多地说明数据类型。这就是字典打印到控制台的方式。如果您想查看 NSDictionary 中的实际类型,请尝试打印

NSStringFromClass(ingredient.valueForKey("serving_count").dynamicType)

检查实际类型。

【讨论】:

您好约翰,感谢您的回复。我更新了我的问题,希望更清楚。我也不再使用 NSDictionary 而是使用字典数组【参考方案2】:

有趣的是,在调试器中,当我打印出 JSON 时,所有服务计数都被双引号括起来。但是,当我在 Xcode 之外加载 JSON 时,我可以清楚地看到问题所在。该服务正在发送一些值作为字符串,一些是数字!

        

            "serving_count": "1.0", 

        , 
        

            "serving_count": 0.5, 
          

【讨论】:

以上是关于解析 JSON 字典时调试器中的不同类型的主要内容,如果未能解决你的问题,请参考以下文章

关于ajax请求返回类型问题

Android 手机卫士--解析json与消息机制发送不同类型消息

调试器在解析 Rest API 响应 HttpClient、Xamarin Forms 时停止

在 Visual Studio 2015 中调试时无法解析参数名称类型 ISession

使用包含不同类型字典的 Swift 解码 JSON

json模块的使用