簡體   English   中英

如何使用SwiftyJson解析JSON

[英]How To Parse JSON with SwiftyJson

這是數據

[{
  "mineral": "Phosphorus",   
  "data": [ 7.65, 19.74, 15.48 ]
},

{
  "mineral": "Calcium",   
  "data": [ 1.65, 1.32, 1.78 ]
}]

這是我用來解析它的代碼。

if let dataFromString = self.response.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {

        let json = JSON(data: dataFromString)

        var valuesB = [Double]()

        for i in 0..<json.count {
            self.nutrient.append(json[i]["mineral"].stringValue)
            print("Nutrient: \(json[i]["mineral"].stringValue)\n")

            for j in 0..<json[i]["data"].count {
                valuesB.append(json[i]["data"][j].doubleValue)
                print("Values: \(json[i]["data"][j].doubleValue)")
            }

            values.append(valuesB)
        }
   }

但是我所得到的是

Nutrient: Phosphorus

Values: 0.0
Values: 0.0
Values: 0.0

Nutrient: Calcium

Values: 0.0
Values: 0.0
Values: 0.0

我在Swift中將SwiftyJson用於Xcode 7,是否有另一種方法可以使用SwiftyJson?

您缺少使用SwiftyJSON的可選getters將JSON轉換為JSON數組的信息,並且JSON無法正確解釋為數組,因此您需要像以下代碼中那樣使用它:

let jsonString = "[{\"mineral\": \"Phosphorus\",\"data\": [ 7.65, 19.74, 15.48 ]},{\"mineral\": \"Calcium\", \"data\": [ 1.65, 1.32, 1.78 ]}]"

if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
        let json = JSON(data: dataFromString)

        // Check if the JSON is an array otherwise nil 
        if let jsonArray = json.array {

            var valuesB = [Double]()

            for i in 0..<jsonArray.count {
                print(jsonArray[i]["mineral"].stringValue)
                print("Nutrient: \(json[i]["mineral"].stringValue)\n")

                for j in 0..<jsonArray[i]["data"].count {
                    valuesB.append(jsonArray[i]["data"][j].doubleValue)
                    print("Values: \(jsonArray[i]["data"][j].doubleValue)")
                }
            }
        }
    }

並且您應該在控制台中看到:

Phosphorus
Nutrient: Phosphorus

Values: 7.65
Values: 19.74
Values: 15.48
Calcium
Nutrient: Calcium

Values: 1.65
Values: 1.32
Values: 1.78

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM