亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

使用注解@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;
    // 合同號(hào)
    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;
    // 合同號(hào)
    @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與對(duì)象轉(zhuǎn)換的幾個(gè)配置筆記

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

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

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

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

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

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

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

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

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

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

空屬性是否序列化

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

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

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

相關(guān)文章

最新評(píng)論