java的類和JSON之間的轉換

  1. JSON格式數(shù)組包含obj類型轉成 list,
    如 [{ContentId: 1, IsForever: false}] 格式,

定義實體類

import com.fasterxml.jackson.annotation.JsonProperty;

public class Content {
    @JsonProperty("ContentId")
    private String contentId;

    @JsonProperty("IsForever")
    private boolean isForever;

    public String getContentId() {
        return contentId;
    }

    public void setContentId(String contentId) {
        this.contentId = contentId;
    }

    public boolean isForever() {
        return isForever;
    }

    public void setForever(boolean forever) {
        isForever = forever;
    }
}

當遇到有字段開頭大寫的時候需要用 JsonProperty 注解,不然java不能正確映射 大寫的開頭的字段,他會轉成小寫的,從而導致轉換失敗,
這里使用ObjectMapper來轉換


public class JacksonUtil {
    private static ObjectMapper objectMapper = null;
    static{
        objectMapper = new ObjectMapper();
        // 如果json中有新增的字段并且是實體類類中不存在的,不報錯
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    }

    // 類轉化成JSON
    public static String GetJSON(Object obj){
        try {
            return objectMapper.writeValueAsString(obj);
        } catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    // 數(shù)組里面包含obj格式的類的json轉換成類
    public static <T> T getAnyBean(String json, TypeReference<?> valueTypeRef){
        T dataBean=null;
        try {
            dataBean= objectMapper.readValue(json, valueTypeRef);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dataBean;
    }
    // 普通obj類型的json類轉換成類
    public static <T> T getAnyBean(String json, Class c){
        T dataBean=null;
        try {
            dataBean= (T)objectMapper.readValue(json, c);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dataBean;
    }
}
// cpData的數(shù)據格式為[{ContentId: "1",IsForever: false}]
List<Content> fileTextList = JacksonUtil.getAnyBean(cpData, new TypeReference<List<Content>>(){});
// 轉換成了Content的list

// star數(shù)據格式是{ContentId: "1",IsForever: false}
Content content = JacksonUtil.getAnyBean(star, Content.class);

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容