Swift用变量类型解析JSON

时间:2016-11-07 22:38:48

标签: ios json swift serialization

我将JSON数据序列化为NSDictionary类型,例如

{ data = 0; } // "data":"0" (when I see its value in debugger)

{ data = 1; }  //"data": Int64(1)(when I see its value in debugger)

我试图以下列方式访问此数据:

 json["data"] as! Int

,但有时它不能被解析为Integer,因为如果它的0它有String值,我得到错误:

 Could not cast value of type 'NSTaggedPointerString' (0x109b54b90) to 'NSNumber'

有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:2)

拯救的条件!

"data"

如果"0"键的值丢失或data {{1}}它将被设置为零。

答案 1 :(得分:0)

要获得一个好的答案,您需要发布更多关于导致这两个值的代码是调试器的上下文。奇数是0的收益率字符串,但其他数字会产生整数。

以下是解决当前问题的方法:

let x = json["data"]
let y = x as? Int ?? Int(y as! String)!

这将首先(安全地)尝试强制转换为Int。如果失败,它会强制转换为String,然后通过Int初始化程序运行,以便对其进行解析。