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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM