我们在代码开发的时候,经常会遇到一些json格式化问题,比如说下面俩种
{
"code": 200, "success": true, "data": [ {
"name": "张三", "age": 22, "gender": "男" }, {
"name": "李四", "age": 19, "gender": "女" }, {
"name": "王五", "age": 34, "gender": "男" }, {
"name": "赵六", "age": 30, "gender": "男" }, {
"name": "田七", "age": 25, "gender": "女" } ], "msg": "操作成功"}
{
"code": 200, "success": true, "data": {
"current": 2, "hitCount": false, "optimizeCountSql": true, "orders": "", "pager": 1, "records": [ {
"name": "张三", "age": 22, "gender": "男" }, {
"name": "李四", "age": 19, "gender": "女" }, {
"name": "王五", "age": 34, "gender": "男" }, {
"name": "赵六", "age": 30, "gender": "男" }, {
"name": "田七", "age": 25, "gender": "女" } ], "searchCount": false, "size": 10, "total": 20 }, "msg": "操作成功" }
其实俩个json传递的都是同一个数据对象,只不过外面包了一层或者俩层结构罢了,难道我们要为它创建俩个数据转化对象,no,no,no,我的强迫症不允许我这么做,所以我提供了一个万能的json格式化方法,可以解析任何层次的json数据,废话不多说,上代码。
1.到入json格式化依赖(这是谷歌的一个json格式化包)版本任选
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency> <!--lombak工具(可选)--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> <scope>provided</scope> </dependency>
2.实体类(数据封装第一层的实体类)
/ * 数据传输的第一层封装 * * @author WangHuan * @date 2021/10/27 17:39 */ @Data public class BaseDataBean<T> {
private String code; private boolean success; private T data; private String msg; }
具体数据实体类
@Data @AllArgsConstructor @NoArgsConstructor public class Person implements Serializable {
private String name; private Integer age; private String gender; }
3.格式化代码
//json化对象 Gson gson = new Gson(); //这俩步获取json字符串 File file = new File("D:\\workspace\\idea\\workStudy\\test\\src\\main\\java\\com\\wh\\1.json"); String string = FileUtils.readFileToString(file); //格式化操作 BaseDataBean<List<Person>> listR = gson.fromJson(string, new TypeToken<BaseDataBean<List<Person>>>() {
}.getType()); System.out.println(listR);
第二层封装对象
/ * 数据传输的第二层封装(可选择的) * * @author WangHuan * @date 2021/10/27 17:41 */ @Data public class DataBean<T> {
private int current; private boolean hitCount; private boolean optimizeCountSql; private String orders; private int pager; private List<T> records; private boolean searchCount; private int size; private int total; }
代码
Gson gson = new Gson(); File file = new File("D:\\workspace\\idea\\workStudy\\test\\src\\main\\java\\com\\wh\\2.json"); String string = FileUtils.readFileToString(file); BaseDataBean<DataBean<List<Person>>> bean = gson.fromJson(string, new TypeToken<BaseDataBean<DataBean<Person>>>() {
}.getType()); System.out.println(bean);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228559.html原文链接:https://javaforall.net
