【问题标题】:parsing json with swiftyJson swift 3用swiftyJson swift 3解析json
【发布时间】:2017-07-11 21:32:25
【问题描述】:

虚拟问题: 我有我的 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?域:“SwiftyJSONErrorDomain” - 代码:901 0x000060000005c080 此错误的意思是:无法合并,因为顶级 JSON 的类型不同

同样适用于: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 swift swift3 swifty-json


    【解决方案1】:

    查看 JSON 对象中每个级别的 cmets

    [-----------------------------------------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"]
    

    【讨论】:

      【解决方案2】:

      对于其他想要通过 Json[array] 的人...在我的情况下,我编写了以下代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多