JSON 最外層為 **陣列**,內含單一物件,鍵 "Android" 對應陣列。
let jsonString = """
[{\"Android\":[{\"ID\":31,\"TN\":\"天天\",...},...]}]
"""
if let data = jsonString.data(using: .utf8) {
do {
// 頂層為 NSArray
if let topArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]],
let firstDict = topArray.first,
let androidArray = firstDict["Android"] as? [[String: Any]] {
// androidArray 即為目標 NSArray
print("解析成功,共 \(androidArray.count) 筆")
for item in androidArray {
print("ID: \(item[\"ID\"] ?? \"\"), TN: \(item[\"TN\"] ?? \"\")")
}
}
} catch {
print("JSON 解析失敗: \(error)")
}
}
JSONSerialization.jsonObject 回傳 Any,**需層層 as? 安全轉型**。String,值為 Any,對應 JSON 物件。Int/Double/Bool,取用時再轉型。Codable 定義結構體自動映射,型別安全且效能更好。