Androidアプリでサーバーから送られてくるデータをRetrofit2でパースして処理しています。
送られてくるJsonのデータを以下のようなJavaのクラスに読み込もうとしています。
Java
1public class Response { 2 public List<data_array>; 3} 4 5public class data_array{ 6 public int id; 7 public String name; 8} 9
サーバーからは名前のないJsonArray(sample1)が送られてきます。
Retrofit2ではsample2のようなJsonArrayに名前がある形式は処理できますが、sample1の形式は無理だと思います。
サーバーの担当者は、iOSの何某というJsonパーサーではできているのだから、できないはずはないだろう。と納得しません。
どう説明したらサーバーの担当者を説得できるでしょうか。
もしRetrofit2単体でもsample1の様なJsonArrayが簡単に処理できる方法があれば、
それもお教えください。よろしくお願いします。
sample1:
javascript
1{ 2 "0": { 3 "id": "0", 4 "name": "aaa" 5 }, 6 "3": { 7 "id": "3", 8 "name": "bbb" 9 } 10}
sample2:
javascript
1{ 2 "data_array": [ 3 { 4 "id": "0", 5 "name": "aaa" 6 }, 7 { 8 "id": "3", 9 "name": "bbb" 10 } 11 ] 12} 13
そもそもsample1はArrayじゃないので、それをArrayと言い張っているならサーバーサイドがおかしいです。
ついでに、タグのJavaScriptってこの場合関係ないですし、サーバー担当者を説得する方法はこのサイトで答える範疇じゃないです。
>JavaScriptってこの場合関係ない
あまり関係ないので外しました。
>Arrayと言い張っているなら
見直してみると確かに、"0"という項目と"3"という項目が入って
いるだけで、ますますパースしにくいですね。
元々Map形式のデータをJson化したもののように見えます。
sample1は明らかにArrayではなくObject形式のJSONですね。ちなみにiOS側の実装ではパース後のデータはどんな型になっているのですか?どちらもArray…?
yukke_さん、Kakajikaさん、どうもありがとうございます。
おかげ様で、自分の思い違いに気が付き、問題点が整理できました。
回答1件
あなたの回答
tips
プレビュー