簡體   English   中英

Swift解析變量類型的JSON

[英]Swift parse JSON with variable types

我有序列化為NSDictionary類型的JSON數據,例如

{ 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'

有什么問題,我該如何解決?

有條件進行救援!

let data: Int = json["data"] as? Int ?? 0

如果"data"鍵的值丟失或為"0"data將被設置為零。

為了得到一個好的答案,您需要發布更多上下文,以確定導致這兩個值的代碼是調試器的原因。 奇怪的是,0會產生字符串,而其他數字會產生整數。

這是眼前問題的解決方案:

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

這將首先(安全地)嘗試強制轉換為Int 如果失敗,它將強制轉換為String ,然后通過Int初始化程序運行它,以便對其進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM