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

需求

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

比如,解析成如下类型:

Map<String, List<Bean>>

依赖(Gson)

xml 复制代码
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
		</dependency>

解决方案

使用 TypeToken 来定义复杂类型。

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

代码示例

测试

java 复制代码
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);

	}
}

数据类

java 复制代码
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 ,内容如下:

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"
		}
	]
}

运行结果

相关推荐
半天法师2 小时前
Bug 记录:UE 结构体转 JSON 时 Key 字段大小写异常 (Editor 与打包后表现不一致)
ai·ue5·json·bug
鸽芷咕3 小时前
KingbaseES数据类型完全指南:从基础CHAR到JSON/XML/几何类型
xml·oracle·json
归途醉染21 小时前
Swifter.Json
c#·json·swifter.json
网络点点滴1 天前
NPM 和 package.json 文件简介
前端·npm·json
夜瞬1 天前
HTTP基础教程:请求方法、状态码、JSON、鉴权、超时、重试与流式返回
网络协议·http·json
wtsolutions2 天前
JSON-to-Excel 本地化应用发布:安全离线转换,数据零泄露
安全·json·excel
剑神一笑3 天前
从 JSON.parse 到树形视图:实现一个在线 JSON 格式化工具
前端·javascript·json
烤麻辣烫3 天前
json与fastjson
前端·javascript·学习·json
guslegend4 天前
AI生图第3节:gpt-image-2的提示词反解析与Json结构化生图
人工智能·gpt·json
wtsolutions4 天前
Excel-to-JSON Local App - Secure Offline Excel to JSON Conversion
json·excel