<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用註解@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));
列印結果:
{"contractId":"comtractId","contractTemplateId":"templateId","contractVersion":"contractVersion"}
Filter指定序列化的欄位
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(FastJsonInputBean.class, "contractTemplateId"); System.out.println("filter忽略contractTemplateId屬性:"+JSONObject.toJSONString(inputBean, filter));
列印結果:
{"contractTemplateId":"templateId"}
@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));
列印結果:
{"contractVersion":"contractVersion"}
最近因為專案需要,對Jackson的使用進行了深入的學習,總結了幾條使用心得,在此記錄一下:
在做Json字串轉換為物件時,有時會出現物件中存在某屬性,而json字串沒有此屬性,預設情況下會丟擲異常。
可通過以下兩種方式設定不丟擲異常:
java類的屬性,一般是小駝峰模式,如testStr。在轉換為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字串轉換為實體物件時,即使設定了大駝峰等模式,使用物件屬性名,也可以解析成功,即TestStr, testStr均可解析成功。
空屬性是否序列化
全域性設定spring.jackson.default-property-inclusion=non_null
non_null
: null不解析non_empty
: 空字元’'和null均不解析以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45