在iOS中读取后,响应JSONString顺序不正确

时间:2016-02-24 07:27:17

标签: ios json swift

我有来自api的JSONString如下: [来自api的JSONString]

enter image description here

但是在我从Alamofire中读取iOS后,JSONString的顺序不正确为api: [在iOS中阅读后的JSON]

enter image description here

如何保持JSON格式与api的顺序相同?

2 个答案:

答案 0 :(得分:1)

正如@Nimit所解释的那样,回调中表示的JSON格式和API响应是最不重要的。您需要关注的是,当您从响应中访问值时,KEY应该与API中看到的相同。没有不匹配,甚至不区分大小写的字母,或者你总是在响应中得到NIL。

使用Alamofire向您解释一下,让我向您展示一个例子:

let APIURL = "https://api.yoururl.com"

Alamofire.request(.GET, APIURL , headers: headers) .responseJSON { response in

            let value = response.result.value!
            let JSONRes = JSON(value)
            let KLValue = JSONRes["Kuala Lumpur"].int!
            print(KLValue) //Or call a function to handle the callback
}

这里我使用SwiftyJSON作为JSON。最后,您要做的就是从JSON响应中的关联键中获取数据,无需担心它们的格式化方式,或者响应中键的顺序是什么 - 大部分时间您都会与API中的相同 - 但如果它发生变化,不必担心。

另一方面,为了确保当JSON字段为零时你的应用没有任何反应,总是像这样放一个if-let:

if let valueFromJSON = JSONRes["Kuala Lumpur"].string {
     someVariable = valueFromJSON
   } else {
     someVariable = "No Value" 
   }

谢谢!

答案 1 :(得分:0)

除非您编写自己的JSON解析器,否则无法执行此操作。任何自尊的JSON库都不能保证订单,如果它想要符合JSON规范。

从JSON对象的定义:

  

NSDictionary类表示无序的对象集合;   但是,它们将每个值与一个键相关联,该键用作标签   为了价值。这对于建模对之间的关​​系很有用   对象。

enter image description here