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 @ 2022-02-16 09:42  陈彦斌  阅读(1707)  评论(0编辑  收藏  举报