需求
通过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"
		}
	]
}
        
运行结果
