Posted at

SwiftyJSONでちょっと階層深くしたときのやり方

More than 1 year has passed since last update.


概要

与えられるJSONはこんな感じで,hobbiesの部分のデータ取得方法がわからなかった.

そこについて説明する.

{

"users":[
{
"name": "太郎",
"age": 23,
"hobbies": [
{
"id": 1,
"name": "野球"
},
{
"id": 5,
"name": "ダーツ"
},
{
"id": 20,
"name": "缶蹴り"
}
]
},
.
.
.
]
}


実際のコード

Alamofire.request(requestUrl).responseJSON{ response in

switch response.result {
case .success(let value):
let json = JSON(value)
json["users"].forEach{(_, data) in
let name = data["name"].string!
let age = data["age"].int!

let hobbyList = data["hobbies"].array
hobbyList?.forEach{(data) in
let hobbyId = data["id"].int!
let hobbyName = data["name"].string!
}
}
case .failure(let error):
print("エラーだよー")
}
}

こんな感じで取得することが出来ます.

let hobbyList = data["hobbies"].array

ここが対象のところで,.arrayとすることで,jsonの"hobbies"のデータを取得しています.

.arrayObjectもあるのですが,"hobbies"の中身をオブジェクトに変換してしまい?:のところが=になり,上手く出来ませんでした.


.arrayの場合

{

"id": 1,
"name": "野球"
}


.arrayObjectの場合

{

"id" = 1,
"name" = "野球"
}