このトピックについてすでに多くの質問が寄せられていることは知っていますが、ここで立ち往生しており、かなりばかげていると確信しています。
次のような JSON Api を解析しています (ここでは名前を変更して簡略化しています)。
{
"merchant": {
"name": "TestCo",
"id": 108
},
"category": [
{
"merchant_id": 108,
"category_name": "Baby Supplies",
"category_id": 57,
},
{
"merchant_id": 108,
"category_name": "Dining",
"category_id": 59,
}
]}
次のように定義されたラッパークラスがあります。
public class WrapperObject {
public MerchantObject merchant;
public List<CategoryObject> category;}
マーチャントとカテゴリの両方が、適切に定義された独自のクラスです。次に、次のように逆シリアル化を試みます。
collectionType = new TypeToken<List<WrapperObject>>() {}.getType();
List<WrapperObject> wrapperObject = new Gson().fromJson(response, collectionType);
これは爆発し、GSON は「これは JSON 配列ではありません」と報告します。
これは、API が変更された先週までは完全に機能していました。JSON の唯一の違いは、以前は次のようになっていたことです (データを囲む余分なラッピング配列に注意してください)。
[{
"merchant": {
"name": "TestCo",
"id": 108
},
"category": [
{
"merchant_id": 108,
"category_name": "Baby Supplies",
"category_id": 57,
},
{
"merchant_id": 108,
"category_name": "Dining",
"category_id": 59,
}
]}]
新しい JSON を解析するようにコードを調整するにはどうすればよいですか? NB、私は JSON を制御できません。ありがとう!