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

wlzqhblo  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(191)

我是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)
}

而且它不起作用。有人能帮我这个吗?非常感谢。

mitkmikd

mitkmikd1#

weights包含一个字典数组

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

3ks5zfa02#

这可能是一个更快的答案。我们在这里所做的是使用map遍历json数组,并为数组中的每一项返回一个dictionary对象。map函数当然会创建自己的数组,并将每个dictionary对象附加到数组中,然后返回存储在weights变量中的整个数组。可能大脑都快被烧坏了,所以如果我没有完全理解,请告诉我。

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

相关问题