我有这个Java类:
class A {
private B b;
class B {
private String a;
//getter + setter
}
}
这是JSON文件的内容:
[{"b" : {"a": "Hello!"}},
{"b" : {"a": "Hi!"}},
{"b" : {"a": "Hello2!"}}]
我想将我的JSON文件反序列化为ArrayList<A>
,其中包含嵌套类。
我怎么能这样做?
答案 0 :(得分:1)
你可以通过Gson实现这一目标。
package stackoverflow.questions.q18932252;
import java.lang.reflect.Type;
import java.util.*;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Q18932252 {
public static void main(String[] args){
String json = "[{\"b\" : {\"a\": \"Hello!\"}}, {\"b\" : {\"a\": \"Hi!\"}}, {\"b\" : {\"a\": \"Hello2!\"}}]";
Type listOfA = new TypeToken<List<A>>() {}.getType();
Gson g = new Gson();
ArrayList<A> result = g.fromJson(json, listOfA);
System.out.println(result);
}
}
使用此结果(我添加了标准toString
方法):
[A [b=B [a=Hello!]], A [b=B [a=Hi!]], A [b=B [a=Hello2!]]]
由于您询问的是JSON文件,即包含JSON字符串的文本文件,请参考How to create a Java String from the contents of a file问题将文件加载到字符串中。
答案 1 :(得分:0)
根据问题中提供的信息,请参阅此帖子,这可以解决您的问题Json parsing with Gson with data and arrays
答案 2 :(得分:0)
使用gson:
Gson gson = new Gson();
String json = "[{\"b\" : {\"a\": \"Hello!\"}}, {\"b\" : {\"a\": \"Hi!\"}}, {\"b\" : {\"a\": \"Hello2!\"}}]";
A[] arrA = new A[0];
System.out.println(Arrays.toString(gson.fromJson(json, arrA.getClass())));