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

對象轉(zhuǎn)Json字符串時如何忽略指定屬性

 更新時間:2022年08月30日 10:19:31   作者:pan_joy  
這篇文章主要介紹了對象轉(zhuǎn)Json字符串時如何忽略指定屬性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

FastJson轉(zhuǎn)Json字符串時,忽略指定屬性

使用注解@JSONField

以下Bean

package com.gomefinance.esign;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
 
/**
 * 本地簽署信息
 * Created by JHAO on 2017/5/31.
 */
@Setter
@Getter
public class FastJsonInputBean implements Serializable {
 
    // 合同模板ID
 
    private String contractTemplateId;
    // 合同號
    private String contractId;
    // Base64編碼的合同
    @JSONField(serialize = false)
    private String contractImage;
    private String contractVersion;
 
}
 FastJsonInputBean inputBean = new FastJsonInputBean();
 inputBean.setContractImage("contractImage");
 inputBean.setContractTemplateId("templateId");
 inputBean.setContractId("comtractId");
 inputBean.setContractVersion("contractVersion");
 
 System.out.println("JSONField(serialize = false)忽略contractImage屬性:"+JSON.toJSONString(inputBean));

打印結(jié)果:

{"contractId":"comtractId","contractTemplateId":"templateId","contractVersion":"contractVersion"}

Filter指定序列化的字段

SimplePropertyPreFilter filter = new SimplePropertyPreFilter(FastJsonInputBean.class, "contractTemplateId");
System.out.println("filter忽略contractTemplateId屬性:"+JSONObject.toJSONString(inputBean, filter));?

打印結(jié)果:

 {"contractTemplateId":"templateId"}

JackSon忽略字段

@JsonIgnoreProperties主鍵或者在字段上使用@JsonIgnore

package com.gomefinance.esign;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
 
/**
 * 本地簽署信息
 * Created by JHAO on 2017/5/31.
 */
@Setter
@Getter
@JsonIgnoreProperties({"contractTemplateId", "contractImage"})
public class JackSonInputBean implements Serializable {
 
    // 合同模板ID
 
    private String contractTemplateId;
    // 合同號
    @JsonIgnore
    private String contractId;
    // Base64編碼的合同
    private String contractImage;
    private String contractVersion;
 
}
 JackSonInputBean jackSonInputBean = new JackSonInputBean();
 jackSonInputBean.setContractImage("contractImage");
 jackSonInputBean.setContractTemplateId("templateId");
 jackSonInputBean.setContractId("comtractId");
 jackSonInputBean.setContractVersion("contractVersion");
 
 ObjectMapper objectMapper = new ObjectMapper();
 System.out.println("JackSon JsonIgnore忽略contractId屬性:"+objectMapper.writeValueAsString(jackSonInputBean));

打印結(jié)果:

{"contractVersion":"contractVersion"}

Jackson Json與對象轉(zhuǎn)換的幾個配置筆記

最近因為項目需要,對Jackson的使用進(jìn)行了深入的學(xué)習(xí),總結(jié)了幾條使用心得,在此記錄一下:

在做Json字符串轉(zhuǎn)換為對象時,有時會出現(xiàn)對象中存在某屬性,而json字符串沒有此屬性,缺省情況下會拋出異常。

可通過以下兩種方式配置不拋出異常:

  • application.properties中進(jìn)行全局配置:spring.jackson.deserialization.fail_on_unknown_properties=false
  • 針對需要配置對象類,添加注解: @JsonIgnoreProperties(ignoreUnknown = true)

java類的屬性,一般是小駝峰模式,如testStr。在轉(zhuǎn)換為Json字符串時,可以控制json中屬性的命名方式,如大駝峰,小駝峰,蛇形(下劃線),不變等。

全局配置屬性spring.jackson.property-naming-strategy

  • UPPER_CAMEL_CASE - 大駝峰 (TestStr)
  • LOWER_CAMEL_CASE - 小駝峰 (testStr)
  • SNAKE_CASE - 下劃線 (test_str)
  • LOWER_CASE - 小寫 (teststr)
  • KEBAB_CASE - 減號 (test-str)

針對指定對象,添加注解@JsonNaming(PropertyNamingStrategy.???.class)

  • @JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class) - 大駝峰
  • @JsonNaming(PropertyNamingStrategy.LowerDotCaseStrategy.class) - .分隔 test.str
  • @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) - 下劃線
  • @JsonNaming(PropertyNamingStrategy.LowerCaseStrategy.class) - 小寫
  • @JsonNaming(PropertyNamingStrategy.KebabCaseStrategy.class) - 減號

其中有一點需要注意,對于從json字符串轉(zhuǎn)換為實體對象時,即使設(shè)置了大駝峰等模式,使用對象屬性名,也可以解析成功,即TestStr, testStr均可解析成功。

空屬性是否序列化

全局配置spring.jackson.default-property-inclusion=non_null

  • non_null: null不解析
  • non_empty: 空字符’'和null均不解析

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java接口語法以及與類的關(guān)系詳解

    java接口語法以及與類的關(guān)系詳解

    接口在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法
    2021-10-10
  • HashMap每次擴(kuò)容為什么是2倍

    HashMap每次擴(kuò)容為什么是2倍

    當(dāng)HashMap在初始化沒有指定容量的情況下,首次添加元素時,數(shù)組的容量為16;當(dāng)超出閾值,數(shù)組容量為擴(kuò)容為之前的2倍,為什么HashMap每次擴(kuò)容都是之前的2倍?下面就介紹一下
    2024-11-11
  • Spring boot如何通過@Scheduled實現(xiàn)定時任務(wù)及多線程配置

    Spring boot如何通過@Scheduled實現(xiàn)定時任務(wù)及多線程配置

    這篇文章主要介紹了Spring boot如何通過@Scheduled實現(xiàn)定時任務(wù)及多線程配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Java多線程環(huán)境下死鎖模擬

    Java多線程環(huán)境下死鎖模擬

    這篇文章主要介紹了模擬Java多線程環(huán)境下的死鎖,文章介紹一些死鎖的產(chǎn)生條件的相關(guān)資料,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • Spring Boot中使用RabbitMQ的示例代碼

    Spring Boot中使用RabbitMQ的示例代碼

    本篇文章主要介紹了Spring Boot中使用RabbitMQ的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • java讀取某個文件夾下的所有文件實例代碼

    java讀取某個文件夾下的所有文件實例代碼

    這篇文章主要介紹了java讀取某個文件夾下的所有文件實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java JVM程序指令碼實例解析

    Java JVM程序指令碼實例解析

    這篇文章主要介紹了Java JVM程序指令碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • IDEA里找不到Maven的有效解決辦法(小白超詳細(xì))

    IDEA里找不到Maven的有效解決辦法(小白超詳細(xì))

    這篇文章主要給大家介紹了關(guān)于IDEA里找不到Maven的有效解決辦法,文中通過圖文將解決的辦法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • springboot項目實現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter的操作步驟

    springboot項目實現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter

    這篇文章主要介紹了springboot項目實現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java的后臺文件夾下文件的遍歷完整代碼

    Java的后臺文件夾下文件的遍歷完整代碼

    這篇文章主要介紹了Java的后臺文件夾下文件的遍歷完整代碼,首先分享了java中遍歷一個文件夾里邊的所有文件,然后介紹了用Java遍歷一個文件夾并獲取它里面的所有內(nèi)容詳細(xì)代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

肥西县| 株洲县| 朝阳县| 和平区| 米林县| 霍州市| 鸡西市| 新余市| 陵水| 全南县| 赤水市| 准格尔旗| 青冈县| 大姚县| 廊坊市| 靖宇县| 兴隆县| 巩留县| 潞城市| 阜新市| 金阳县| 申扎县| 乳山市| 淅川县| 灯塔市| 玉溪市| 渝中区| 峨山| 呼图壁县| 渝北区| 邢台县| 兴山县| 逊克县| 漳浦县| 镇原县| 广灵县| 舞阳县| 泾源县| 大丰市| 车致| 依兰县|