最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中@JSONField和@JsonProperty注解的使用說(shuō)明及對(duì)比

 更新時(shí)間:2023年11月16日 11:31:12   作者:WgRui  
@JSONField與@JsonProperty隸屬兩個(gè)不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說(shuō)明及對(duì)比,感興趣的可以了解一下

@JSONField

@JSONField注解是阿里巴巴的fastjson框架中的注解,用于指定JSON字符串中的屬性名和Java對(duì)象中的屬性名之間的映射關(guān)系

1. name屬性

通過(guò)name屬性可以指定將Java對(duì)象中的屬性名映射為JSON對(duì)象中的屬性名。默認(rèn)情況下,JSON對(duì)象中的屬性名與Java對(duì)象中的屬性名相同

示例:

public class User {
    @JSONField(name = "id")
    private int userId;
    private String name;
    private int age;
}

在上面的例子中,使用@JSONField注解將Java對(duì)象中的userId屬性映射為JSON對(duì)象中的id屬性

2. format屬性

通過(guò)format屬性可以指定日期類型屬性的格式,以及將數(shù)字類型轉(zhuǎn)為字符串類型的格式

示例:

public class User {
    private String name;
    private int age;
    @JSONField(format = "yyyy-MM-dd")
    private Date birthday;
    @JSONField(format = "#,###.00")
    private double salary;
}

在上面的例子中,使用@JSONField注解指定了birthday屬性的日期格式為“yyyy-MM-dd”,salary屬性的數(shù)字格式為“#,###.00”

3. serialize屬性

通過(guò)serialize屬性可以控制屬性是否序列化到JSON對(duì)象中

當(dāng)serialize屬性為false時(shí),屬性將不會(huì)序列化到JSON對(duì)象中,默認(rèn)為true

示例:

public class User {
    @JSONField(serialize = false)
    private int userId;
    private String name;
    private int age;
}

在上面的例子中,使用@JSONField注解將userId屬性從序列化中排除

4. deserialize屬性

通過(guò)deserialize屬性可以控制是否將JSON對(duì)象中的屬性反序列化到Java對(duì)象中

當(dāng)deserialize屬性為false時(shí),該屬性將不會(huì)從JSON對(duì)象中反序列化到Java對(duì)象中,默認(rèn)為true

示例:

public class User {
    private int userId;
    private String name;
    @JSONField(deserialize = false)
    private int age;
}

在上面的例子中,使用@JSONField注解將age屬性從反序列化中排除

5. ordinal屬性

通過(guò)ordinal屬性可以指定屬性的順序

默認(rèn)情況下,屬性的順序是按照屬性在Java對(duì)象中的順序排列的

示例:

public class User {
    @JSONField(ordinal = 2)
    private String name;
    @JSONField(ordinal = 1)
    private int age;
}

在上面的例子中,使用@JSONField注解指定了age屬性的順序?yàn)?,name屬性的順序?yàn)?

6. defaultValue屬性

通過(guò)defaultValue屬性可以指定屬性在Java對(duì)象中的默認(rèn)值

示例:

public class User {
    @JSONField(defaultValue = "0")
    private int userId;
    @JSONField(defaultValue = "N/A")
    private String name;
    private int age;
}

在上面的例子中,使用@JSONField注解指定了userId屬性的默認(rèn)值為0,name屬性的默認(rèn)值為“N/A”

7. type屬性

通過(guò)type屬性可以指定屬性的類型

示例:

public class User {
    private int userId;
    @JSONField(type = FieldType.STRING)
    private int age;
}

在上面的例子中,使用@JSONField注解指定了age屬性的類型為字符串類型

8. jsonDirect屬性

通過(guò)jsonDirect屬性可以指定屬性是否應(yīng)該直接輸出為JSON字符串

默認(rèn)情況下,屬性將被轉(zhuǎn)化為字符串并以引號(hào)標(biāo)記輸出

示例:

public class User {
    private String name;
    @JSONField(jsonDirect = true)
    private String jsonMessage;
}

在上面的例子中,使用@JSONField注解指定了jsonMessage屬性應(yīng)該直接輸出為JSON字符串

9. parseFeatures屬性和serializeFeatures屬性

通過(guò)parseFeatures屬性和serializeFeatures屬性可以配置解析和序列化時(shí)的特性

具體可參考阿里巴巴fastjson的文檔

示例:

public class User {
    private String name;
    private int age;
    @JSONField(parseFeatures = Feature.AllowSingleQuotes)
    private String message;
}

在上面的例子中,使用@JSONField注解指定了message屬性在解析時(shí)允許使用單引號(hào)

@JsonProperty

@JsonProperty注解是Jackson框架中的注解,用法類似于@JSONField,也是指定JSON字符串中的屬性名和Java對(duì)象中的屬性名之間的映射關(guān)系

1. value

value屬性用于指定序列化后的屬性名稱

如果未提供value屬性,則屬性名稱默認(rèn)與Java屬性名稱相同

示例:

public class Person {
    
    @JsonProperty("name")
    private String fullName;

}

在上面的例子中,將Java對(duì)象中fullName屬性序列化為JSON對(duì)象中的"name"屬性

2. defaultValue

defaultValue屬性用于指定當(dāng)Java對(duì)象屬性值為null時(shí),序列化為JSON時(shí)使用的默認(rèn)值

該屬性僅適用于對(duì)象屬性而不適用于基本類型屬性

示例:

public class Person {
    
    @JsonProperty(defaultValue = "John")
    private String firstName;
}

在上面的例子中,將未設(shè)置firstName的Person對(duì)象序列化為含有默認(rèn)值"John"的JSON屬性

3. access

access屬性用于指定Java屬性的訪問(wèn)級(jí)別

默認(rèn)訪問(wèn)級(jí)別為PUBLIC,也可以設(shè)為READ_ONLY或WRITE_ONLY

示例:

public class Person {
    
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;
}

在上面的例子中,將Java對(duì)象中的password屬性序列化為JSON時(shí)忽略掉

4. required

required屬性指定此屬性是否為必須字段

如果為true,則當(dāng)將JSON轉(zhuǎn)換回Java對(duì)象時(shí),如果該屬性不存在,則將引發(fā)異常

示例:

public class Person {
    
    @JsonProperty(required = true)
    private String name;
}

在上面的例子中,將Java對(duì)象中的name屬性序列化為確保其在JSON對(duì)象中存在

5. defaultValue

defaultValue屬性用于指定Java屬性的默認(rèn)值

在將JSON轉(zhuǎn)換回Java對(duì)象時(shí)如果該屬性不存在或?yàn)閚ull,則使用默認(rèn)值

示例:

public class Person {
    
    @JsonProperty(defaultValue = "30")
    private int age;
}

在上面的例子中,將Java對(duì)象中的age屬性序列化為JSON時(shí),如果該屬性不存在,則使用默認(rèn)值30

6. index

index屬性用于指定序列化的屬性在JSON對(duì)象中的位置,數(shù)值越小,位置越靠前

示例:

public class Person {
    
    @JsonProperty(index = 1)
    private String firstName;
    
    @JsonProperty(index = 0)
    private String lastName;
}

在上面的例子中,將Java對(duì)象中的lastName屬性序列化為JSON對(duì)象中的第一個(gè)屬性,firstName屬性序列化為JSON對(duì)象中的第二個(gè)屬性

7. accessMode

accessMode屬性用于指定序列化時(shí)使用的訪問(wèn)模式

如果未指定,則默認(rèn)為PROPETY模式,即訪問(wèn)getter方法獲取屬性值。另一個(gè)可用的模式是FIELD,即直接訪問(wèn)Java屬性

示例:

public class Person {

    private String firstName;

    @JsonProperty(access = JsonProperty.Access.READ_ONLY, accessMode = JsonProperty.AccessMode.FIELD)
    private String lastName;
}

在上面的例子中,將Java對(duì)象中l(wèi)astName屬性序列化為JSON屬性,直接訪問(wèn)Java屬性值。

8. ignore

ignore屬性用于指定是否忽略該屬性

如果為true,則在序列化和反序列化時(shí)忽略該屬性

示例:

public class Person {

    private String firstName;

    @JsonProperty(ignore = true)
    private String lastName;
}

在上面的例子中,將Java對(duì)象中的lastName屬性忽略掉,不進(jìn)行序列化和反序列化

優(yōu)劣對(duì)比

1.@JSONField注解的使用方式更加簡(jiǎn)單,注解默認(rèn)的值與屬性名相同,而@JsonProperty需要手動(dòng)指定屬性名

2.@JSONField注解支持更多的屬性映射選項(xiàng),例如序列化時(shí)的日期格式,空值的處理方式等

3.@JSONField注解的性能較快,因?yàn)閒astjson本身就是一款高性能的JSON處理庫(kù)

4.在使用Jackson框架時(shí),只能使用@JsonProperty注解,無(wú)法使用@JSONField注解

到此這篇關(guān)于java中@JSONField和@JsonProperty注解的使用說(shuō)明及對(duì)比的文章就介紹到這了,更多相關(guān)java @JSONField和@JsonProperty 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的Caffeine加載與驅(qū)逐策略詳解

    Java中的Caffeine加載與驅(qū)逐策略詳解

    這篇文章主要介紹了Java中的Caffeine加載與驅(qū)逐策略詳解,Caffeine是基于Java 8的高性能緩存庫(kù),可提供接近最佳的命中率,Caffeine與ConcurrentMap相應(yīng),但是不完全相同,本文主要介紹Caffeine,需要的朋友可以參考下
    2023-10-10
  • Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼

    Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼

    Shiro是Apache?的一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理,Shiro?主要分為兩個(gè)部分就是認(rèn)證和授權(quán)兩部分,這篇文章主要介紹了Springboot+Shiro+Mybatis+mysql實(shí)現(xiàn)權(quán)限安全認(rèn)證的示例代碼,需要的朋友可以參考下
    2024-07-07
  • 詳解Spring MVC攔截器實(shí)現(xiàn)session控制

    詳解Spring MVC攔截器實(shí)現(xiàn)session控制

    這篇文章主要介紹了詳解Spring MVC攔截器實(shí)現(xiàn)session控制,使用session監(jiān)聽(tīng),重復(fù)登錄后,強(qiáng)制之前登錄的session過(guò)期。有興趣的可以了解一下。
    2017-01-01
  • 在IDEA使用中directory和package的操作

    在IDEA使用中directory和package的操作

    這篇文章主要介紹了在IDEA使用中directory和package的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 詳解Java異常處理的使用與思考

    詳解Java異常處理的使用與思考

    異常處理的概念起源于早期的編程語(yǔ)言,如?LISP、PL/I?和?CLU。這些編程語(yǔ)言首次引入了異常處理機(jī)制,以便在程序執(zhí)行過(guò)程中檢測(cè)和處理錯(cuò)誤情況。本文主要來(lái)介紹一下Java中的異常處理,需要的可以參考一下
    2023-04-04
  • 生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析

    生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析

    這篇文章主要為大家介紹了生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Stream distinct根據(jù)list某個(gè)字段去重的解決方案

    Stream distinct根據(jù)list某個(gè)字段去重的解決方案

    這篇文章主要介紹了Stream distinct根據(jù)list某個(gè)字段去重,stream的distinct去重方法,是根據(jù) Object.equals,和 Object.hashCode這兩個(gè)方法來(lái)判斷是否重復(fù)的,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • java實(shí)現(xiàn)的正則工具類

    java實(shí)現(xiàn)的正則工具類

    這篇文章主要介紹了java實(shí)現(xiàn)的正則工具類,可用于針對(duì)電話號(hào)碼、郵箱、QQ號(hào)碼、QQ密碼、手機(jī)號(hào)的正則驗(yàn)證功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • idea項(xiàng)目中target文件提示拒絕訪問(wèn)的解決

    idea項(xiàng)目中target文件提示拒絕訪問(wèn)的解決

    這篇文章主要介紹了idea項(xiàng)目中target文件提示拒絕訪問(wèn)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解Java中StringBuffer類常用方法

    詳解Java中StringBuffer類常用方法

    這篇文章主要為大家介紹了java中StringBuffer類常用方法
    2016-01-01

最新評(píng)論

竹溪县| 莱西市| 博野县| 七台河市| 顺义区| 资中县| 桃源县| 樟树市| 高清| 双城市| 胶州市| 阳西县| 册亨县| 宁德市| 沿河| 玛纳斯县| 阿拉善左旗| 康马县| 东兴市| 丽水市| 西平县| 玛纳斯县| 九台市| 镇康县| 西华县| 阜南县| 巴彦县| 盐津县| 和林格尔县| 滨海县| 霍邱县| 沂水县| 于都县| 开封市| 东源县| 山东省| 辽宁省| 南宁市| 东阿县| 木里| 保德县|