2017-02-14 77 views
0

我有一個JSON,它有一個JSONArray作爲其中一個json的值。這是它的例子。如何檢查swiftyJSON中的空JSONArray

[ 
    { 
    "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"] 

回答

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