我有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。 我有一个问题。 如何访问此数据(例如名称)?
答案 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: