【问题标题】:How to check an empty JSONArray in swiftyJSON如何在 swiftyJSON 中检查一个空的 JSONArray
【发布时间】:2017-02-14 15:55:23
【问题描述】:

我有一个 JSON,其中有一个 JSONArray 作为其中一个 json 的值。这是它的例子。

[
  {
    "id": 1,
    "symptoms" : [{\"key\":\"sample1\",\"value\":5},{\"key\":\"sample2\",\"value\":5}]
  },
  {
    "id": 2,
    "symptoms" : [{\"key\":\"sample3\",\"value\":1}]
  },
  { "id": 3,
    "symptoms" : []
  },
  {
    "id": 4,
    "symptoms": [{\"key\":\"sample4\",\"value\":1}]
  }
]

所以我正在做的是解析内部 JSON 并将其放在字符串数组中。但是每当我查看symptoms 时,它都会跳过空的 JSONArray。因此,每当我打印字符串数组时,它都会像这样(上面有给定的样本)["sample1", "sample2", "sample3", "sample4"]。但我想做的是每当 JSONArray 为空时将"" 附加到字符串数组,所以它应该是这样的["sample1", "sample2", "sample3", "", "sample4"]。任何人都可以帮助我吗?这是我的代码

var arrayHolder: [String] = []
var idHolder: [Int] = []
for item in swiftyJSON.arrayValue {
    idHolder.append(item["id"].intValue)

    //for the inner JSON
    let innerJSON = JSON(data: item["symptoms"].dataUsingEncoding(NSUTF8StringEncoding)!)
    for symptoms in innerJSON.arrayValue {
        arrayHolder.append(symptoms["key"].stringValue)
    }
}
print(idHolder) // [1,2,3,4]
print(arrayHolder) // ["sample1","sample2","sample3","sample4"]

【问题讨论】:

    标签: swift2 swifty-json


    【解决方案1】:

    只需检查innerJSON 是否为空:

    for item in swiftyJSON.arrayValue {
        idHolder.append(item["id"].intValue)
    
        //for the inner JSON
        let innerJSON = item["symptoms"].arrayValue // non need to create a new JSON object
    
        if innerJSON.isEmpty {
            arrayHolder.append("")
        } else {
           for symptoms in innerJSON {
               arrayHolder.append(symptoms["key"].stringValue)
           }
        }
    }
    

    【讨论】:

    • 非常感谢这个!不知道isEmpty 方法。我将在 20 秒内接受这个答案。
    猜你喜欢
    • 2015-05-02
    • 2018-08-12
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多