このエントリーをはてなブックマークに追加

2016年12月30日金曜日

ObjectMapperでJSONのネスト配列に対応する方法

こんにちは、onukiです。

私はSwiftでJSONを取り扱う際に、
ObjectMapperを使用してるのですが
今回は読み込むJSONにネスト配列がある場合の使い方を書いていこうと思います。

ObjectMapperとは

ObjectMapperとはJSONデータをモデルに変換する処理を
簡単に扱えるライブラリです。

使い方

今回、読み込むJSONは以下のようなネスト配列が含まれているものを使用します。
{
    "id": 1,
    "name": "user1",
    "address": "hoge",
    "photos": [
    {
    "id": 1,
    "name": "photo1"
    },
    {
    "id": 2,
    "name": "photo2"
    }
    ]
}

ObjectMapperはMappableプロトコルをモデルクラスに実装し使用するのですが
今回はネスト配列に対応するために2つ作成します。
struct User: Mappable {
    var id = 0
    var name = ""
    var address = ""
    var photos: [Photo] = []
    
    init?(map: Map){}
    mutating func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
        address <- map["address"]
        photos <- map["photos"]
    }
}
struct Photo: Mappable {
    var id = 0
    var name = ""
    
    init?(map: Map){}
    mutating func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
    }
}

JSONからモデルに変換するのには以下のように取得します。
let user: User = Mapper().map(JSONString: jsonString)!
print(user.name) // => "user1"

そして、userのphotos配列から0番目のデータを取得したい際にはこのように取得します。
let photo: Photo = user.photos[0]

これでObjectMapperでJSONのネスト配列を読み込み、扱うことが出来ました。

0 件のコメント:

コメントを投稿