1

私は以下のJsonを持っています:

{
    "0001":[111, "BLABLA", "LALA", "KKK",80,20],
    "002":[222, "BLABLA", "LALA", "KKK",80,40],
    "003":[333, "BLABLA", "LALA", "KKK",100,20],
    "000":[444, "BLABLA", "LALA", "KKK",800,60],
    "555":[555, "BLABLA", "LALA", "KKK",80,20,
    "100":[48, "BLABLA", "LALA", "KKK",80,20]
}

Gson のデシリアライズに問題があります。以下のように定義された変数名を持つ Json での作業を知っています。

{
   "item":"001":["id":1,"description":"bla bla"],
   "item":"002":["id":2,"description":"bla bla"]
}

次に、json と同じ変数名でクラスを定義し、解析を実行します。

public class DataClass
{
  String item;
  int id;
  String description;

  getters and setters;

}

gson.fromJson (json, DataClass.class);

しかし、変数名なしでjsonを使用する必要がある場合(投稿の冒頭)、これを行う方法がわかりません。誰でも助けることができますか?

4

2 に答える 2

1

このクラスはあなたの質問に答えます:

package stackoverflow.questions.q18116805;

import java.lang.reflect.Type;
import java.util.*;

import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;

public class Q18116805 {


    public static void main(String[] args) {
        String json =                                                 
            "{  \"0001\":[111, \"BLABLA\", \"LALA\", \"KKK\",80,20],   "+
            "    \"002\":[222, \"BLABLA\", \"LALA\", \"KKK\",80,40],   "+
            "    \"003\":[333, \"BLABLA\", \"LALA\", \"KKK\",100,20],  "+
            "    \"000\":[444, \"BLABLA\", \"LALA\", \"KKK\",800,60],  "+
            "    \"555\":[555, \"BLABLA\", \"LALA\", \"KKK\",80,20],   "+
            "    \"100\":[48, \"BLABLA\", \"LALA\", \"KKK\",80,20]}";

        Type aType = new TypeToken<Map<String,ArrayList<Object>>>() {}.getType();
        Map<String,ArrayList<Object>> map = new Gson().fromJson(json, aType);

        System.out.println(map);
    }
}

結果は次のとおりです。

{0001=[111.0, ブラブラ, ララ, KKK, 80.0, 20.0], 002=[222.0, ブラブラ, ララ, KKK, 80.0, 40.0], 003=[333.0, ブラブラ, ララ, KKK, 100.0, 20.0], 000 =[444.0, ブラブラ, ララ, KKK, 800.0, 60.0], 555=[555.0, ブラブラ, ララ, KKK, 80.0, 20.0], 100=[48.0, ブラブラ, ララ, KKK, 80.0, 20.0]}

于 2013-10-05T22:16:56.477 に答える