gson自定义Type解析json数组字符串

简介: gson自定义Type解析json数组字符串

前言


gson解析很好用。

string转对象,可以用

new Gson().fromJson(jsonString,object.class);

对象转String可以使用

String str = gson.toJson(user);


怎么将json数组字符串转成对象list呢?


比如下面的json。嵌套很深。


要转的字符串

[
  {
    "label": "您的驾驶证类型",
    "type": "numberfield",
    "value": "",
    "required": true,
    "order": 2,
    "placeHolder": "",
    "selectOption": [
      {
        "itemValue": "1",
        "itemName": "看书"
      }
    ]
  },
  {
    "label": "您当前驾驶车型",
    "type": "numberfield",
    "value": "",
    "required": true,
    "order": 2,
    "placeHolder": "",
    "selectOption": [
      {
        "itemValue": "1",
        "itemName": "看书"
      }
    ]
  },
  {
    "label": "您当前车辆品牌",
    "type": "numberfield",
    "value": "",
    "required": true,
    "order": 2,
    "placeHolder": "",
    "selectOption": [
      {
        "itemValue": "1",
        "itemName": "看书"
      }
    ]
  },
  {
    "label": "您当前所在省市",
    "type": "numberfield",
    "value": "",
    "required": true,
    "order": 2,
    "placeHolder": "",
    "selectOption": [
      {
      "itemValue": "1",
      "itemName": "看书"
      }
    ]
  }
,
  {
    "label": "海选赛举办城市",
    "type": "numberfield",
    "value": "",
    "required": true,
    "order": 2,
    "placeHolder": "",
    "selectOption": [
      {
        "itemValue": "1",
        "itemName": "看书"
      }
    ]
  }
]


答: 自定义TypeToken


实战


实体类

CustomFieldDTO
/**
 * 活动自定义字段
 */
@NoArgsConstructor
@Data
public class CustomFieldDTO {
    @JsonProperty("label")
    private String label;
    @JsonProperty("type")
    private String type;
    @JsonProperty("value")
    private String value;
    @JsonProperty("required")
    private Boolean required;
    @JsonProperty("order")
    private Integer order;
    @JsonProperty("placeHolder")
    private String placeHolder;
    @JsonProperty("selectOption")
    private List<SelectOptionDTO> selectOption;
    @NoArgsConstructor
    @Data
    public static class SelectOptionDTO {
        @JsonProperty("itemValue")
        private String itemValue;
        @JsonProperty("itemName")
        private String itemName;
    }
}


自定义typeToken转换

@Test
    public void testPrintMessage() {
        Gson gson = new Gson();
        //转成json数组
        //自定义类型转换
        Type type = new TypeToken<List<CustomFieldDTO>>() { }.getType();
        //解析
        List<CustomFieldDTO> list = gson.fromJson(str, type);
        //遍历打印
        list.parallelStream().forEach((item) -> {
            logger.info(String.valueOf(item));
        });
    }


效果

5d4c6812c8535adbb050f4ddf2e1bce8.png

看出解析出结果了。


代码很优雅,不用一个字段一个字段的处理。推荐!!!


相关文章
|
25天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
53 1
|
1月前
|
存储 缓存 安全
C++数组全解析:从基础知识到高级应用,领略数组的魅力与技巧
C++数组全解析:从基础知识到高级应用,领略数组的魅力与技巧
53 1
|
1月前
|
C语言
【进阶C语言】数组笔试题解析
【进阶C语言】数组笔试题解析
17 0
|
1月前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
269 0
|
2天前
|
存储 NoSQL 安全
Redis入门到通关之数据结构解析-动态字符串SDS
Redis入门到通关之数据结构解析-动态字符串SDS
10 0
|
2天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
11天前
|
存储 索引 Python
深入解析NumPy数组的形状与重塑
【4月更文挑战第17天】本文深入解析了NumPy数组的形状和重塑。数组形状是表示数组维度和大小的元组,可通过`shape`属性获取。重塑允许改变数组形状而不改数据,需保证元素总数不变。`reshape`方法用于重塑,其中`-1`可让NumPy自动计算尺寸。注意重塑遵循元素总数相等、仅一次`-1`、内存存储顺序及返回新数组的原则。理解和掌握这些概念对高效使用NumPy处理多维数组至关重要。
|
15天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
31 0
|
1月前
|
JSON JavaScript 数据格式
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
95 2
|
1月前
|
存储 算法 Serverless
【软件设计师备考 专题 】数据结构深度解析:从数组到图
【软件设计师备考 专题 】数据结构深度解析:从数组到图
56 0

推荐镜像

更多