サードパーティのRESTfulWebサービスから次のJSONを取得するJavaアプリがあります。
{
"widgets":[
[
{
"id":25128,
"status":"always",
"uuid":"96f62edd-fa8a-4267-8ffb-14af0d37de26"
}
],
[
{
"id":25200,
"status":"always",
"uuid":"78553c9e-398f-495a-8fb8-ada0fb297844"
}
],
[
{
"id":25128,
"status":"never",
"uuid":"b1e3deb2-a842-4cba-8272-458d15efb394"
}
]
]
}
List<Widget>
そしてそれを使用するGSONに変換しようとしています:
public class Widget {
@SerializedName("id")
private Long id;
@SerializedName("status")
private String status;
@SerializedName("uuid")
private String uuid;
// Getters & setters, etc.
}
これが私のマッパーコードです:
String jsonResponse = getJsonFromWebService();
Gson gson = new Gson();
List<Widget> widgets = gson.fromJson(jsonResponse, new TypeToken<List<Widget>>(){}.getType());
これを実行すると、次のエラーが発生します。
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
明らかに、GSONマッパーコードに送信する前にJSON文字列を操作するか、「予期しない」JSONを処理するようにGSONを構成する必要がありますが、どちらがより簡単で適切かはわかりません。JSON文字列を「マッサージ」する必要がある場合、GSONをうまく機能させるために何をする必要があるかわかりません。また、GSONを構成する必要がある場合は、そこで何をすべきかわからない。何か案は?前もって感謝します。