2017-05-20 11 views
0

我有一個json數據。我從來沒有使用過SwiftyJSON。我正在嘗試第一次。使用SwiftyJSON進行Swift 3.1的子數組

我的JSON是這樣的:

[ 
{ 
    "Id": 1, 
    "Name": "A", 
    "SubNames": [ 
    { 
    "SubId": 1, 
    "SubName": "A1" 
    }, 
    { 
    "SubId": 2, 
    "SubName": "A2" 
    }] 
}, 
{ 
    "Id": 2, 
    "Name": "B", 
    "SubNames": [ 
    { 
    "SubId": 1, 
    "SubName": "B1" 
    }, 
    { 
    "SubId": 2, 
    "SubName": "B2" 
    }] 
} 
] 

我可以處理名稱,並附加陣列。但我無法處理子名稱。我嘗試了一些但不幸的工作。我想追加SubName一個數組。這個陣列會是這樣的:

[["A1","A2"],["B1","B2"]] 

我用這個代碼:

let json = JSON(data: data!) 
for (_,subJson):(String, JSON) in json {     
self.names.append(subJson["Name"].stringValue 
} 
+1

顯示使用swiftyjson爲此json結構準備的模型。 –

+0

@AnilKumar我編輯了我的問題。這夠了嗎?謝謝。 – Mayday

+0

@AnilKumar抱歉,我不明白你能解釋一下嗎? – Mayday

回答

0

試試這個訪問這些領域,你不應該做data!這裏

guard let `data` = data else { 
    //no data handling 
    return 
} 
let dataArray = JSON(data: data).arrayValue 
var arrayOfAllSubnames: [[String]] = [[]] 

for object in dataArray { 
    var arrayOfSubnames: [String] = [] 
    if let subnames = object["SubNames"].array { 
     for subname in subnames { 
      //here you get `"SubId": 2, "SubName": "B2"` object 
      let subnameValue = subname["SubName"].stringValue 
      arrayOfSubnames.append(subnameValue) 
     } 
    } 
    arrayOfAllSubnames.append(arrayOfSubnames) 
} 
+0

謝謝。但我的問題收集在數組SubName,像這樣:[[「A1」,「A2」],[「B1」,「B2」]] – Mayday

+0

@五月編輯回答 – JuicyFruit

0

斯威夫特3.0

1)首先聲明子名稱數組。 2)你可以像下面那樣訪問和存儲這個對象。

let json = JSON(data: data!).arrayValue 

for item in json { 

    var tempArray: [String] = [] 

    let name = item["Name"].stringValue 

    for subNameItem in items["SubNames"].arrayValue { 
    tempArray.append(subNameItem["SubName"].stringValue) 
    } 
    subNameArray.append(tempArray) 
} 
+0

謝謝,但首先@JuicyFruit回答。我會接受他的,對不起。 – Mayday

+0

不是問題,很高興與你得到了你的最終答案。繼續質疑 – Jaydeep

相關問題