2017-02-14 32 views
0

У меня есть JSON, который имеет JSONArray как значение в одном из json внутри него. вот пример этого.Как проверить пустой JSONArray в swiftyJSON

[ 
    { 
    "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. Поэтому всякий раз, когда я печатаю String Array, он выглядит примерно так (с данным примером сверху) ["sample1", "sample2", "sample3", "sample4"]. Но я хочу сделать, чтобы добавить "" в String Array всякий раз, когда 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"] 

ответ

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) 
     } 
    } 
} 
+0

спасибо большое за это! не знал о методе 'isEmpty'. Я собираюсь принять этот ответ за 20 секунд. – Reginald

+1

Я обновил ответ с более эффективной версией. – vadian