Gson阵列反序列化

时间:2013-08-12 13:33:28

标签: android json arraylist gson json-deserialization

我有以下JSON结构:

[
 {
  "id": 1,
  "subcategories": [
   {
    "id": 2,
    "subcategories": [
    ]
   },
   {
    "id": 3,
    "subcategories": [
    ]
   }
  ]
 },
 {
  "id": 4,
  "subcategories": [
   {
    "id": 5,
    subcategories: [
    ]
   }
  ]
 }
]

类别的模型类(为简单起见,省略了一些像title这样的字段), 用于反映JSON结构:

public class Category {
    int id = 0;
    ArrayList<Category> subCategories = null;
}

我正在尝试用Gson库解析它(2.2.4),很难将内部数组反序列化为arraylist:

Gson gson = new Gson();
Type collectionType = new TypeToken<ArrayList<Category>>(){}.getType();
ArrayList categories = gson.fromJson(json, collectionType);

Category.subCategories始终为null。

2 个答案:

答案 0 :(得分:8)

gson.fromJson(json, Category[].class)

对我有用。如果你想要一个ArrayList而不是一个Array:

new ArrayList<Category>(Arrays.asList(gson.fromJson(json, Category[].class)));

答案 1 :(得分:-1)

试试这个。

public class Category {
    int id = 0;
    ArrayList<Category> subCategories = new ArrayList<Category>()
}