使用SwiftyJSON将JSONArray解析为字符串数组

时间:2016-10-21 04:05:39

标签: json swift2 xcode7 swifty-json

嗯,我真的是新Swift,而且我已经使用swiftyJSON轻松解析来自API的JSON数据。

我的数据响应如下:

[
   {
     "fname": < String value>
     "mname": < String value>
     "lname": < String value>
     "weights": [
          {
            "date": <String value>, 
            "weight": <String value> 
          },
          {
            "date": <String value>,
            "weight": <String value>
          }
]

对于我的swiftyJSON解析方式,这是我的代码

let swiftyJSON = JSON(data: data!)
for item in swiftyJSON.arrayValue{
    self.firstName = item["fname"].stringValue
    self.middleName = item["mname"].stringValue
    self.lastName = item["lname"].stringValue
    //JSON Array "weights" code snippet below
}

对于名称,我已将其解析为字符串,但使用"weights"。我不知道该怎么做。我已经尝试过使用它了:

for key in item["weights"]["weight"].arrayValue{
   self.allWeights.append(key.stringValue)
}

它不起作用。有人可以帮我弄这个吗?非常感谢。

2 个答案:

答案 0 :(得分:4)

weights包含一系列词典

...   
if let weights = item["weights"].array {
   for weightItem in weights {
     let date = weightItem["date"].stringValue
     let weight = weightItem["weight"].stringValue
     print(date, weight)
   }
 }

答案 1 :(得分:0)

这可能是一个快速的答案。我们在这里所做的是使用map遍历json数组,并为数组中的每个项目返回一个字典对象。在返回存储在weights变量中的整个数组之前,map函数当然会创建自己的数组并将每个字典对象附加到该数组。可能大脑快要炸了,所以如果我做得不对,请告诉我。

let swiftyJSON = JSON(data: data!)
let weights = swiftyJSON["weights"].arrayValue.map {["date": $0["date"].stringValue, "weights": $0["weights"].stringValue]}