数组反序列化的GSON阵列

数组反序列化的GSON阵列

本文介绍了数组反序列化的GSON阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下JSON结构:

  [
 {
  标识:1,
  子:
   {
    ID:2,
    子:
    ]
   },
   {
    ID:3,
    子:
    ]
   }
  ]
 },
 {
  ID:4,
  子:
   {
    ID:5,
    子类别:
    ]
   }
  ]
 }
]
 

有关类别的模型类(如标题有些字段省略为简单起见),为反映JSON结构:

 公共类分类{
    INT标识= 0;
    ArrayList的<类别>子类= NULL;
}
 

我试图解析与GSON库(2.2.4),有困难的时候反序列化内部数组ArrayList的:

  GSON GSON =新GSON();
键入collectionType =新TypeToken< ArrayList的<类别>>(){}的getType()。
ArrayList的类别= gson.fromJson(JSON,collectionType);
 

Category.subCategories总是空。

解决方案

  gson.fromJson(JSON,分类[]。类)
 

为我工作不错。如果你想要一个ArrayList而不是数组:

 新的ArrayList<类别>(Arrays.asList(gson.fromJson(JSON,分类[]类)));
 

I've the following JSON structure:

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

The model class for a Category (some fields like title are omitted for simplicity),for reflecting JSON structure:

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

I'm trying to parse that with Gson library (2.2.4), having hard times deserializing inner array to arraylist:

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

Category.subCategories is always null.

解决方案
gson.fromJson(json, Category[].class)

worked good for me. If you want an ArrayList instead of an Array:

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

这篇关于数组反序列化的GSON阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 10:25