Как разобрать JSON с помощью Swift - PullRequest
0 голосов
/ 19 сентября 2019

Файл 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"
               }
            ]
         }
      ]
   }
}

Код Swift:

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 имя и значение от dtcSnapshotParameters.

Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...