У меня есть ArrayList<CustomClass>
внутри ParentClass
, который я написал в файл, используя Gson.toJson()
. Однако, когда я пытаюсь де-сериализовать JSON, используя Gson.fromJson()
, я получаю только 1 элемент из ArrayList<CustomClass>
.Gson fromJson only loading 1 элемент ArrayList в объекте
Например, я сделаю следующее
public class ParentClass {
private ArrayList<CustomClass> myList = new ArrayList<CustomClass>();
private GrandParentClass nested;
public ParentClass() {
myList.add(new CustomClass("adsf"));
myList.add(new CustomClass("fdsa"));
nested = new GrandParentClass();
}
public int arraySize() {
return myList.size();
}
}
public class GrandParentClass {
private ArrayList<OtherCustomClass> myList = new ArrayList<OtherCustomClass>();
public GrandParentClass() {
myList.add(new CustomClass("asdfasdf.."));
myList.add(new CustomClass("fdsafdsa..."));
}
public int arraySize() {
return myList.size();
}
}
Затем, когда я создаю экземпляр нового экземпляра ParentClass, я использую следующее записать его в файл.
ParentClass pc = new ParentClass();
Gson gson = new Gson();
String writeThis = gson.toJson(pc); // Produces a perfect JSON reflection myList
FileOutputStream fos = new FileOutputStream(new File("writeto.json"));
fos.write(writeThis);
fos.close();
Объект JSON записывается в виде простого текста в файл .json
FileInputStream fis = new FileInputStream(new File("writeto.json"));
char c;
StringBuffer sb = new StringBuffer();
while ((c = fis.read()) != -1)
sb.append((char) c);
//Now this is where I only get 1 element of the ArrayList
Gson gson = new Gson();
ParentClass pc = gson.fromJson(sb.toString(), ParentClass.class);
Log.i("SIZE", "Size is " + pc.arraySize()); // Log output: 'Size is 1'
Теперь, даже если я проверил, что на самом деле есть два элемента в ArrayList
в файле формата JSON, только 1 загружается в объект, используя fromJson
.
Я сериализации это просто отлично, я бы, однако, хотел бы десериализации ArrayList<OtherCustomClass>
внутри GrandParentClass
, который находится внутри ParentClass
, одним махом.
В принципе, я хочу сериализовать ArrayLists
вложенные, возможно, 3 или 4 слоя вниз в эту иерархию объектов и десериализовать их в 1 ParentClass, содержащий эти вложенные ArrayLists<?>
. Как это будет сделано?
Благодаря
Просто из любопытства, почему вы решили использовать GSON? Я использую [jackson] (http://jackson.codehaus.org/) для скорости разбора. Я просто хочу знать, стоит ли мне смотреть в GSON. – javelinBCD