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));
        });
    }
  • 效果

    看出解析出结果了。
    代码很优雅,不用一个字段一个字段的处理。推荐!!!

完

相关文章
|
并行计算 Java 数据处理
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
1296 0
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
1533 2
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
1014 4
JSON数据解析实战:从嵌套结构到结构化表格
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
1219 37
|
Web App开发 移动开发 前端开发
React音频播放器样式自定义全解析:从入门到避坑指南
在React中使用HTML5原生&lt;audio&gt;标签时,开发者常面临视觉一致性缺失、样式定制局限和交互体验割裂等问题。通过隐藏原生控件并构建自定义UI层,可以实现完全可控的播放器视觉风格,避免状态不同步等典型问题。结合事件监听、进度条拖拽、浏览器兼容性处理及性能优化技巧,可构建高性能、可维护的音频组件,满足跨平台需求。建议优先使用成熟音频库(如react-player),仅在深度定制需求时采用原生方案。
760 12
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
2849 12
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
853 12
|
JSON JavaScript 前端开发
一次采集JSON解析错误的修复
两段采集来的JSON格式数据存在格式问题,直接使用PHP的`json_decode`会报错。解决思路包括:1) 手动格式化并逐行排查错误;2) 使用PHP-V8JS扩展在JavaScript环境中解析。具体方案一是通过正则表达式和字符串替换修复格式,方案二是利用V8Js引擎执行JS代码并返回JSON字符串,最终实现正确解析。 简介: 两段采集的JSON数据因掺杂JavaScript代码导致PHP解析失败。解决方案包括手动格式化修复和使用PHP-V8JS扩展在JavaScript环境中解析,确保JSON数据能被正确处理。
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
525 0

热门文章

最新文章

推荐镜像

更多
  • DNS