当前位置: 首页 > news >正文

Gson:解析JSON为复杂对象:TypeToken

需求

通过Gson,将JSON字符串,解析为复杂类型。

比如,解析成如下类型:

Map<String, List<Bean>>

依赖(Gson)

		<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency>

解决方案

使用 TypeToken 来定义复杂类型。

Type type = new TypeToken<复杂类型>() {}.getType();

代码示例

测试

package com.example.web.user;import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;import com.example.util.FileUtils;
import com.example.web.user.bean.User;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;/*** 测试:Gson解析字符串为复杂类型。*/
public class Test {public static void main(String[] args) {// 读取文件内容String json = FileUtils.read("config/group_user.json");// 转为需要的类型Gson gson = new Gson();Type type = new TypeToken<Map<String, List<User>>>() {}.getType();Map<String, List<User>> map = gson.fromJson(json, type);// 打印预览System.out.println(map);}
}

数据类

package com.example.web.user.bean;import lombok.Data;@Data
public class User {private String id;private String name;private String tag;
}

Json文件

JSON文件 group_user.json ,内容如下:

{"10": [{"id": "1001","name": "张三","tag": "10"},{"id": "1002","name": "李四","tag": "10"},{"id": "1003","name": "王五","tag": "10"}],"20": [{"id": "2001","name": "小明","tag": "10"},{"id": "2002","name": "小红","tag": "10"},{"id": "2003","name": "小蓝","tag": "10"}]
}

在这里插入图片描述

运行结果

在这里插入图片描述

http://www.lryc.cn/news/110466.html

相关文章:

  • 伪彩色处理及算法
  • Gradle-02:问题Plugin with id ‘maven‘ not found
  • jupyter lab环境配置
  • Unity Sort Group(排序组)
  • 基于总线加锁和缓存锁(CPU实现原子操作的两种方式)
  • MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法
  • 【java】使用maven完成一个servlet项目
  • 前端Vue入门-day07-Vuex入门
  • 2023再谈前端状态管理
  • ffmpeg SDL播放器--播放udp组播流
  • __attribute__((noreturn))
  • 遮挡边界处的深度补全和双曲面外推
  • LK-99室温超导激发万万亿市场,将对我们的生活产生哪些影响?
  • 子集——力扣78
  • 【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(8 月 2 日论文合集)
  • JDK中「SPI」原理分析
  • DSL:数字用户线路(Digital Subscriber Line)
  • Java集合ArrayList详解
  • React Dva项目 Model中编写与调用异步函数
  • 小程序自定义tabBar+Vant weapp
  • Dubbo+Zookeeper使用
  • 短视频平台视频怎么去掉水印?
  • Stable Diffusion - Style Editor 和 Easy Prompt Selector 提示词插件配置
  • Stable Diffusion - SDXL 模型测试 (DreamShaper 和 GuoFeng v4) 与全身图像参数配置
  • 中介者模式(Mediator)
  • SpringBoot使用@Autowired将实现类注入到List或者Map集合中
  • 【linux目录的权限和粘滞位】
  • TP DP PP 并行训练方法介绍
  • P005 – Python操作符、操作数和表达式
  • SQL92 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING