java 反序列化,json字段别名

引入gson和fastjson依赖

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


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>
复制代码

实体类

复制代码
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import lombok.Data;

/**
 * @Description: 序列化与反序列化字段别名映射
 * @Author:chenyanbin
 * @CreateTime: 2022-02-16 09:17
 * @Version:1.0.0
 */
@Data
public class ExcelVo {
    //序列化json时,name字段的别名为姓名
    @JsonProperty("姓名")
    //反序列化时,姓名字段的别名为name
    @SerializedName("姓名")
    private String name;

    //序列化json时,age字段的别名为年龄
    @JsonProperty("年龄")
    //反序列化时,年龄的别名为age
    @SerializedName("年龄")
    private String age;
}
复制代码

单元测试

复制代码
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Author:chenyanbin
 * @CreateTime: 2022-02-16 09:19
 * @Version:1.0.0
 */
public class Test01 {
    public static void main(String[] args) {
        Map<String, String> jsonMap = new HashMap<>();
        jsonMap.put("姓 名", "Alex");
        jsonMap.put("年 龄", "01");
        List<Map<String, String>> list = new ArrayList<>();
        list.add(jsonMap);
        Map<String, String> jsonMap2 = new HashMap<>();
        jsonMap2.put("姓 名", "Alex111");
        jsonMap2.put("年 龄", "01222");
        list.add(jsonMap2);
        //组装json数据
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
        //json反序列化别名映射(包含中文)
        List<ExcelVo> excelVos = new Gson().fromJson(jsonString, new TypeToken<List<ExcelVo>>() {
        }.getType());
        excelVos.stream().forEach(System.err::println);
    }
}
复制代码

 

posted @   陈彦斌  阅读(1790)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2020-02-16 链表
点击右上角即可分享
微信分享提示