イシュー
- 世の中のAPIのレスポンスは、ほとんどListで返すだろうが(rssとか)、Mapで返した場合のメリット・デメリットについて考えてみる。
Listのメリット・デメリット
メリット
- Listの要素数を固定にできるため、Metadataで表現しやすい
デメリット
Mapのメリット・デメリット
メリット
- キーが分かっていれば、使用する時に変換不要で使える。(Listだとmatchさせるか、Mapに変換する必要がある)
デメリット
- キーがわかっていないと、value値(のデータ)を取得できない。
- なので、rssなどのキーが固定されないAPIでは使用できない
- Mapのキーが要素となるため、Metadataでどう表現するか? (value値がキーになるのでMetadata化できない)
- ListじゃないのでFilterが作れない(一旦Listに入れなおす必要がある)
- Mapの場合、id をキーとするため、id 必須となる。
- create 時はid 無しで処理するので、mapの構造が、参照時と異なる(List ならid要素がnullであるだけ)
参考
{
"statuses": [
{
"coordinates": null,
"favorited": false,
"truncated": false,
"created_at": "Mon Sep 24 03:35:21 +0000 2012",
"id_str": "250075927172759552",
"entities": {
中略
},
"in_reply_to_user_id_str": null,
"contributors": null,
"text": "Aggressive Ponytail #freebandnames",
"metadata": {
中略
},
"retweet_count": 0,
"in_reply_to_status_id_str": null,
"id": 250075927172759552,
"geo": null,
"retweeted": false,
"in_reply_to_user_id": null,
"place": null,
"user": {
中略
},
"in_reply_to_screen_name": null,
"source": "<a>Twitter for Mac</a>",
"in_reply_to_status_id": null
},
{
以下ループ
}
],
"search_metadata": {
"max_id": 250126199840518145,
"since_id": 24012619984051000,
"refresh_url": "?since_id=250126199840518145&q=%23freebandnames&result_type=mixed&include_entities=1",
"next_results": "?max_id=249279667666817023&q=%23freebandnames&count=4&include_entities=1&result_type=mixed",
"count": 4,
"completed_in": 0.035,
"since_id_str": "24012619984051000",
"query": "%23freebandnames",
"max_id_str": "250126199840518145"
}
}