LoginSignup
1
2

More than 5 years have passed since last update.

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

Posted at

概要

与えられる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" = "野球"
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2