需求
通过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"}]
}