iOS-JSONSerialization VS JSONDecoder和用法

时间:2018-12-02 14:45:49

标签: ios json swift jsondecoder json-serialization

所以我得到了以下json:

 {
"output": [
"{\"cameraIsOnboarded\" : true}"
 ],
"exit_code": 0
}

我尝试使用以下模型对其进行解码:

struct CameraOnboard: Codable {

  var output: [Output]
  //var exit_code: Int?
 }

struct Output: Codable {

  var cameraIsOnboarded: Bool?
}

然后在我的解析器中使用它:

        let infoString = try JSONDecoder().decode(CameraOnboard.self, from: data)

但是它摇摇欲坠。

然后我尝试使用JSONSerialization,因为我认为我对\“ cameraIsOnboarded \”键存在问题,因此我从alamofire结果字符串中获取并尝试了以下操作:

   let jsonData = data.data(using: .utf8)

    var dic: [String : Any]?
    do {
        dic = try JSONSerialization.jsonObject(with: jsonData!, options: []) as? [String : Any]
    } catch {
        print(error.localizedDescription)
    }

    print(dic!)
    if let outPutArr  = dic?["output"] as? NSArray {
        print(outPutArr)

        if let first = outPutArr.firstObject {
            print(first)

            //let val =  first["cameraIsOnboarded"]
           // print(val!)
        }
    }

因此,如上所述,我不知道如何提取值:

{“ cameraIsOnboarded”:true}

如果我执行以下操作:

  if let first = outPutArr.firstObject as? [String: Bool] {
            print(first)

            //let val =  first["cameraIsOnboarded"]
           // print(val!)
        }

它步入了内部

谢谢

1 个答案:

答案 0 :(得分:1)

json应该看起来像(推荐)

error

您可以使用它来处理当前案件

{
    "output": {
        "cameraIsOnboarded" : true
    },
    "exit_code": 0
}