欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@JsonProperty和@JSONField注解的區(qū)別解析(最新)

 更新時間:2024年04月01日 11:15:17   作者:四問四不知  
Jackson是一款優(yōu)秀的JSON解析庫,添加了依賴之后就可以使用對應(yīng)的注解,讓我們能夠自由的將Java對象和JSON做轉(zhuǎn)換,這篇文章主要介紹了@JsonProperty和@JSONField注解的區(qū)別,需要的朋友可以參考下

JSON(JavaScript Object Notation)

json是一種常見的數(shù)據(jù)交換的輕量級數(shù)據(jù)格式。HTTP協(xié)議傳輸數(shù)據(jù)可以有多種數(shù)據(jù)格式,比如下面幾種常見數(shù)據(jù)傳輸格式,除此之外還有其他的數(shù)據(jù)交換格式。

數(shù)據(jù)傳輸類型編碼類型示例
表單格式application/x-www-form-urlencodedusername=zk&password=123
JSON(JavaScript Object Notation)application/json{"username": "zk","password": "123"}
XML(eXtensible Markup Language)application/xml<user><username>zk</username><password>123</password></user>

Jackson

Jackson是一款優(yōu)秀的JSON解析庫,添加了依賴之后就可以使用對應(yīng)的注解,讓我們能夠自由的將Java對象和JSON做轉(zhuǎn)換。

比如Java對象轉(zhuǎn)JSON

@JsonProperty和@JSONField

為了解決JSON字符串和其實(shí)體bean的屬性名匹配不上的問題,@JsonProperty和@JSONField都可以將某一屬性名序列化為另一屬性名。

那么@JsonProperty和@JSONField有什么區(qū)別呢?

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.hust.zhang.serializable.JsonUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
public class JsonPropertiesVsJsonField {
    @AllArgsConstructor
    @Data
    @Builder
    static class Properties {
        @JsonProperty(value = "json-properties")
        private String jsonProperties;
        @JSONField(name = "json-field")
        private String jsonField;
    }
    public static void main(String[] args) {
        Properties properties = Properties.builder()
                .jsonProperties("test-properties")
                .jsonField("test-field")
                .build();
        System.out.println(JsonUtils.toJson(properties));
        System.out.println(JSON.toJSONString(properties));
    }
}

輸出結(jié)果如下,

{"jsonField":"test-field","json-properties":"test-properties"}
{"json-field":"test-field","jsonProperties":"test-properties"}

可以看到調(diào)用JsonUtils.toJson方法時,加了@JsonProperty才與bean實(shí)際屬性名匹配。
其中該方法定義如下,ObjectMapper的writeValueAsString方法。

/**
 * Json轉(zhuǎn)換工具類
 */
@Slf4j
public final class JsonUtils {
    /**
     * 私有無參構(gòu)造方法 常量類不能實(shí)例化,直接引用
     */
    private JsonUtils() {
    }
    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
    static {
        OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        OBJECT_MAPPER.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true);
    }
    public static String toJson(Object object) {
        try {
            return OBJECT_MAPPER.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            log.error("Failed to write the object to string" + object.getClass().getName());
            return null;
        }
    }
    public static <T>T parse(String json, Class<T> tClass){
        try {
            return OBJECT_MAPPER.readValue(json,tClass);
        } catch (JsonProcessingException e) {
            log.error("Failed to deserialize JSON content, json value : " + json);
            return null;
        }
    }
}

除此之外還可以看看@JsonAlias注解。

參考鏈接

1、https://baijiahao.baidu.com/s?id=1765042798858921947&wfr=spider&for=pc
2、https://developer.aliyun.com/article/768691

到此這篇關(guān)于@JsonProperty和@JSONField注解的區(qū)別的文章就介紹到這了,更多相關(guān)@JsonProperty和@JSONField注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JPA的多表復(fù)雜查詢的方法示例

    JPA的多表復(fù)雜查詢的方法示例

    這篇文章主要介紹了JPA的多表復(fù)雜查詢的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 區(qū)分java中String+String和String+char

    區(qū)分java中String+String和String+char

    這篇文章主要向大家詳細(xì)區(qū)分了java中String+String和String+char,感興趣的小伙伴們可以參考一下
    2016-01-01
  • java 算法之歸并排序詳解及實(shí)現(xiàn)代碼

    java 算法之歸并排序詳解及實(shí)現(xiàn)代碼

    這篇文章主要介紹了java 算法之歸并排序詳解及實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • java中的序列化解析

    java中的序列化解析

    這篇文章主要介紹了java中的序列化解析,為了將對象進(jìn)行網(wǎng)絡(luò)傳輸或者是持久化,我們需要將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或者傳輸?shù)男问?這個轉(zhuǎn)換的過程就叫序列化,需要的朋友可以參考下
    2023-09-09
  • 完整B樹算法Java實(shí)現(xiàn)代碼

    完整B樹算法Java實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了完整的B樹算法Java實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java類加載器ClassLoader用法解析

    Java類加載器ClassLoader用法解析

    這篇文章主要介紹了Java類加載器ClassLoader用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java實(shí)現(xiàn)世界上最快的排序算法Timsort的示例代碼

    Java實(shí)現(xiàn)世界上最快的排序算法Timsort的示例代碼

    Timsort?是一個混合、穩(wěn)定的排序算法,簡單來說就是歸并排序和二分插入排序算法的混合體,號稱世界上最好的排序算法。本文將詳解Timsort算法是定義與實(shí)現(xiàn),需要的可以參考一下
    2022-07-07
  • mybatis使用foreach遍歷list集合或者array數(shù)組方式

    mybatis使用foreach遍歷list集合或者array數(shù)組方式

    這篇文章主要介紹了mybatis使用foreach遍歷list集合或者array數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • spring boot自帶圖片服務(wù)器使用詳解

    spring boot自帶圖片服務(wù)器使用詳解

    這篇文章主要為大家詳細(xì)介紹了spring boot自帶圖片服務(wù)器的使用 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java中的RPC框架Dubbo原理和機(jī)制詳解

    Java中的RPC框架Dubbo原理和機(jī)制詳解

    這篇文章主要介紹了Java中的RPC框架Dubbo原理和機(jī)制詳解,Dubbo 是一款Java RPC框架,致力于提供高性能的 RPC 遠(yuǎn)程服務(wù)調(diào)用方案,作為主流的微服務(wù)框架之一,Dubbo 為開發(fā)人員帶來了非常多的便利,需要的朋友可以參考下
    2024-01-01

最新評論