如何使用Swift解析JSON

时间:2019-09-19 13:28:21

标签: json swift

Json文件:

{
   "status":200,
   "dtcReadout":{
      "id":"e21c3793-8570-4476-b563-b89700bd3fa1",
      "asyncStatus":"Complete",
      "messageTimestamp":"2019-09-17T07:42:07+0000",
      "vehicleId":"VF15RBJ0D58494174",
      "dtcs":[
         {
            "ecuId":"122",
            "dtcId":"1",
            "status":"PREVIOUSLY_ACTIVE",
            "description":"...",
            "dtcSnapshotParameters":[
               {
                  "name":"Parameter1",
                  "value":"12.9"
               },
               {
                  "name":"Parameter2",
                  "value":"9"
               }
            ]
         },
         {
            "ecuId":"122",
            "dtcId":"2",
            "status":"ACTIVE",
            "description":"...",
            "dtcSnapshotParameters":[
               {
                  "name":"Parameter3",
                  "value":"ABCD"
               },
               {
                  "name":"Parameter4",
                  "value":"0.5"
               }
            ]
         }
      ]
   }
}

快捷代码:

class ViewController: UIViewController {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        NetworkManager.downloadData { jsonData in
            guard let jData = jsonData else {
                return
            }

            do{
                if let json = try JSONSerialization.jsonObject(with: jData, options: []) as? [String: Any] {
                    if let status = json["status"] as? Int {
                        print(status)
                    }
                    if let dtcReadout = json["dtcReadout"] as? [String: Any] {
                        print(dtcReadout["id"] ?? "")
                        print(dtcReadout["asyncStatus"] ?? "")
                        print(dtcReadout["messageTimestamp"] ?? "")
                        print(dtcReadout["vehicleId"] ?? "")
                        print(dtcReadout["dtcs"] ?? "")

                    }
                }
            }
            catch let err{
                print(err.localizedDescription)
            }
        }
    }
}

我很困惑从ecuId获取dtcSnapshotParameters的名称和值的详细信息

那是我的结果:

200
e21c3793-8570-4476-b563-b89700bd3fa1
Complete
2019-09-17T07:42:07+0000
VF15RBJ0D58494174

但是我无法从ecuId的名称和值那里获取信息。

我该如何解决这个问题?

0 个答案:

没有答案