JSON字符串到集合Java

时间:2014-02-25 21:33:51

标签: java json deserialization gson json-deserialization

我有JSON字符串

例如

[{  
 "id":"abc",
 "name":"ffa",
 "done":0
},
{  
 "id":"abc",
 "name":"ffa",
 "done":0
}]

我想将此JSON转换为Examp类的集合。 我试过用gson。

public static void main(String[] args)
{
   Gson gson = new Gson();
   Examp a=new Examp(); //Class Examp have 3 fields (id,name,done)
   Examp b=new Examp();

   a.done=0;
   b.done=0;

   a.id="foo";
   b.id="foo1";

   a.name="faa";
   b.name="faa1";

   ArrayList<Examp> arr= new ArrayList<Examp>();
   arr.add(b);
   arr.add(a);

   String str = gson.toJson(arr);
   System.out.println(str); //format check

   ArrayList<Examp> collection = gson.fromJson(str, ArrayList.class);

}

此时集合中的数据类型不是Examp,而是LinkedTreeMap。 我有一个问题。 如何访问此数据(例如名称)?

2 个答案:

答案 0 :(得分:3)

您需要TypeToken

ArrayList<Examp> collection = gson.fromJson(str, new TypeToken<ArrayList<Examp>>(){}.getType());

TypeToken是一种通用hack,用于获取泛型类型的泛型类型参数。

请注意,您将无法将TypeToke与变量一起使用。 (你将能够使用它,但不会得到你想要/期望的东西。)

答案 1 :(得分:0)

您需要使用TypeToken

Type type = new TypeToken<ArrayList<Examp>>() {}.getType();
List<Examp> collection = gson.fromJson(json, type );

参考wiki page