簡體   English   中英

使用 Swift 4 中的數組解析嵌套的 JSON 語句

[英]parsing nested JSON statement with arrays in Swift 4

我環顧四周,但找不到解決我問題的答案。 我是編碼新手,並使用此示例進入主題。 我想解析一個嵌套的 JSON 語句,我用來測試的代碼如下:

import Foundation

let jsonDict = """
{"Data":[{"id": 40, "val": 600,"valStr": "600","sysVal": "580","inst": 0,"valid": "true"},
{"id": 44, "val": 600,"valStr": "600","sysVal": "580","inst": 0,"valid": "true"}]}
""".data(using: .utf8)!
print("IF statement ")


let json = try? JSONSerialization.jsonObject(with: jsonDict, options: .allowFragments) as! [String: Any]
if let dictionary = json as? [String: Any],
    let data = dictionary["Data"]
{
    print("Data= \(data)")
}

我可以訪問根元素的整體內容,但不能訪問數組中的元素。 我會很高興在這里得到任何幫助。

刪除JSONSerialization並使用Decodable 它的描述性更強,效率更高。

result是表示外部字典的Root結構。 字典鍵成為結構成員。

let jsonString = """
{"Data":[{"id": 40, "val": 600,"valStr": "600","sysVal": "580","inst": 0,"valid": "true"},
{"id": 44, "val": 600,"valStr": "600","sysVal": "580","inst": 0,"valid": "true"}]}
"""

let data = Data(jsonString.utf8)

struct Root : Decodable {
    private enum CodingKeys : String, CodingKey { case data = "Data"}

    let data : [Subject]
}

struct Subject : Decodable {
    let id, val, inst : Int
    let valStr, sysVal, valid : String
}

do {
    let result = try JSONDecoder().decode(Root.self, from: data)
    for item in result.data {
        print(item.id, item.val, item.valid)
    }
} catch { print(error) }

暫無
暫無

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

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