Gson阵列反序列化

Jum*_*mpa 3 android json arraylist gson json-deserialization

我有以下JSON结构:

[
 {
  "id": 1,
  "subcategories": [
   {
    "id": 2,
    "subcategories": [
    ]
   },
   {
    "id": 3,
    "subcategories": [
    ]
   }
  ]
 },
 {
  "id": 4,
  "subcategories": [
   {
    "id": 5,
    subcategories: [
    ]
   }
  ]
 }
]
Run Code Online (Sandbox Code Playgroud)

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

public class Category {
    int id = 0;
    ArrayList<Category> subCategories = null;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Category.subCategories始终为null.

Jum*_*mpa 8

gson.fromJson(json, Category[].class)
Run Code Online (Sandbox Code Playgroud)

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

new ArrayList<Category>(Arrays.asList(gson.fromJson(json, Category[].class)));
Run Code Online (Sandbox Code Playgroud)