用 swiftyJson swift 解析 json 3

parsing json with swiftyJson swift 3

虚拟问题: 我有我的 json:

       let jsonDestination = "[{\"data\": {\"destinos\": [{\"idDestino\": \"1\",\"desDestino\": \"ASUNCION\"},{\"idDestino\": \"2\",\"desDestino\": \"MIAMI\"}]}}]"

如果 "idDestino" 像这样打印结果:

    if let dataFromString = jsonDestination.data(using: .utf8, allowLossyConversion: false) {
        let destinationJson = JSON(data: dataFromString)

        for item in destinationJson["destinos"].arrayValue {
            print(item["idDestino"].stringValue)
        }
    }

但是,永远不要输入执行行 print(item["idDestino"].stringValue)

我也试试这个:

let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]
print(firtsDestinationId)

并得到这个错误:

_error NSError? domain: "SwiftyJSONErrorDomain" - code: 901 0x000060000005c080 This error is means: Couldn't merge, because the JSONs differ in type on top level

同样适用于:let firtsDestinationId = destinationJson["data"][0]["destinos"]["idDestino"]

所以..我真正的问题是我不知道如何获取我的 json 的数据...可以帮我吗?

PD.:这个例子工作得很好:

let jsonDestination =  "{ \"people\": [{ \"firstName\": \"Paul\", \"lastName\": \"Hudson\", \"isAlive\": true }, { \"firstName\": \"Angela\", \"lastName\": \"Merkel\", \"isAlive\": true }, { \"firstName\": \"George\", \"lastName\": \"Washington\", \"isAlive\": false } ] }"

          if let dataFromString = jsonDestination.data(using: String.Encoding.utf8) {
        let destinationJson = JSON(data: dataFromString)

        for item in destinationJson["people"].arrayValue {
            print(item["firstName"].stringValue)
        }
    }

我的json是什么问题?怎样才能正确使用?

在你的 JSON 对象中查看我对每个级别的评论

[-----------------------------------------Array
   {--------------------------------------Obj
      "data":{----------------------------Obj
         "destinos":[---------------------Array
            {-----------------------------Obj
               "idDestino":"1",
               "desDestino":"ASUNCION"
            },
            {  
               "idDestino":"2",
               "desDestino":"MIAMI"
            }
         ]
      }
   }
]

下面的代码不起作用,因为 destinos 的 JSON 元素是一个数组。

let firtsDestinationId = destinationJson[0]["data"]["destinos"]["idDestino"]

你不能尝试下面的代码

let firtsDestinationId = destinationJson[0]["data"]["destinos"][0]["idDestino"]

对于想要遍历 Json[数组] 的其他人...在我的例子中,我写了这段代码:

       for item in destinationJson["data"]["destinos"].arrayValue {
            print(item["idDestino"].stringValue)
        }