广告
返回顶部
首页 > 资讯 > 后端开发 > Python >对象转Json字符串时如何忽略指定属性
  • 930
分享到

对象转Json字符串时如何忽略指定属性

2024-04-02 19:04:59 930人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录FastJSON转json字符串时,忽略指定属性JackSon忽略字段Jackson Json与对象转换的几个配置笔记FastJson转Json字符串时,忽略指定属性 使用注解@

FastJson转Json字符串时,忽略指定属性

使用注解@JSONField

以下Bean

package com.Gomefinance.esign;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
 

@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"}

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;
 

@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与对象转换的几个配置笔记

最近因为项目需要,对Jackson的使用进行了深入的学习总结了几条使用心得,在此记录一下:

在做Json字符串转换为对象时,有时会出现对象中存在某属性,而json字符串没有此属性,缺省情况下会抛出异常。

可通过以下两种方式配置不抛出异常:

  • application.properties中进行全局配置:spring.jackson.deserialization.fail_on_unknown_properties=false
  • 针对需要配置对象类,添加注解: @JsonIgnoreProperties(ignoreUnknown = true)

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均不解析

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 对象转Json字符串时如何忽略指定属性

本文链接: https://www.lsjlt.com/news/166342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 对象转Json字符串时如何忽略指定属性
    目录FastJson转Json字符串时,忽略指定属性JackSon忽略字段Jackson Json与对象转换的几个配置笔记FastJson转Json字符串时,忽略指定属性 使用注解@...
    99+
    2022-11-13
  • JS对象如何转JSON字符串
    这篇文章主要介绍“JS对象如何转JSON字符串”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JS对象如何转JSON字符串”文章能帮助大家解决问题。使用JSON.stringify()方法您可以使用该...
    99+
    2023-06-26
  • 如何将json字符串转为php对象
    这篇文章主要讲解了“如何将json字符串转为php对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何将json字符串转为php对象”吧!json_decode()函数json_decod...
    99+
    2023-07-05
  • es6如何将json字符串转为对象
    这篇文章主要介绍“es6如何将json字符串转为对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6如何将json字符串转为对象”文章能帮助大家解决问题。转换步...
    99+
    2022-10-19
  • 如何将json字符串转换为java对象
    如何将json字符串转换为java对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,...
    99+
    2023-06-14
  • 如何将javascript对象转换为json字符串
    这篇文章将为大家详细讲解有关如何将javascript对象转换为json字符串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在javascript中,可以使用内置方法“JSON.stringify()”来...
    99+
    2023-06-14
  • 如何将JSON字符串数组转对象集合
    目录JSON字符串数组转对象集合json字符串/数组与Java对象/集合互转1.将java对象转换为json字符串2.json字符串与Java对象的转换JSON字符串数组转对象集合 ...
    99+
    2022-11-13
  • php中如何将对象转为json字符串数组
    本篇内容介绍了“php中如何将对象转为json字符串数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、PHP的JSON函数要实现对象转化...
    99+
    2023-07-06
  • php如何将json字符串转换为数组和对象
    本篇内容介绍了“php如何将json字符串转换为数组和对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Json字符串的格式在我们学习Jso...
    99+
    2023-07-05
  • 如何实现JSON字符串转化为PHP对象或数组
    这篇“如何实现JSON字符串转化为PHP对象或数组”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何实现JSON字符串转化为...
    99+
    2023-07-05
  • 当我们为字符串数据类型指定 CHARACTER SET 二进制属性时,MySQL 如何反应?
    On specifying a CHARACTER SET binary attribute for a character string data type, MySQL creates that column as its subseq...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作