广告
返回顶部
首页 > 资讯 > 后端开发 > Python >ObjectMapper 如何忽略字段大小写
  • 365
分享到

ObjectMapper 如何忽略字段大小写

2024-04-02 19:04:59 365人浏览 八月长安

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

摘要

ObjectMapper 忽略字段大小写 核心代码: ObjectMapper mapper = new ObjectMapper(); mapper.configure(Des

ObjectMapper 忽略字段大小写

核心代码:


ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FaiL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

例子:


import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JSONMappingException;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper; 
public class Test{
    public static void main(String[] args) {
  try {
   A a = new A();
   a.lastname = "jack";
   ObjectMapper mapper = new ObjectMapper();
   mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
   mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
   A2 convertValue = new A2();
     mapper.updateValue(convertValue, a);
   System.out.println(convertValue);
  } catch (jsonMappingException e) {
   e.printStackTrace();
  }
 }
 
 public static class A{
  String lastname; 
  public String getLastname() {
   return lastname;
  }
 
  public void setLastname(String lastname) {
   this.lastname = lastname;
  } 
 }
 
 public static class A2{
  String lastName; 
  public String getLastName() {
   return lastName;
  }
 
  public void setLastName(String lastName) {
   this.lastName = lastName;
  }
 
  @Override
  public String toString() {
   return "A2 [lastName=" + lastName + "]";
  }   
 }
}

ObjectMapper 的一些坑

相信做过Java 开发对这个类应该不陌生,没错,这个类是jackson提供的,主要是用来把对象转换成为一个json字符串返回到前端

现在大部分数据交换都是以json来传输的,所以这个很重要,那你到底又对这个类有着有多少了解呢,下面我说一下我遇到的一些坑

首先,先把我要说的几个坑需要设置的属性贴出来先


ObjectMapper objectMapper = new ObjectMapper();
  
  //序列化的时候序列对象的所有属性
  objectMapper.setSerializationInclusion(Include.ALWAYS);
  
  //反序列化的时候如果多了其他属性,不抛出异常
  objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  
  //如果是空对象的时候,不抛异常
  objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  
  //取消时间的转化格式,默认是时间戳,可以取消,同时需要设置要表现的时间格式
  objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
  objectMapper.setDateFORMat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))

简单说一下这个类的基本用法,以下采用代码块加截图的形式来说明和部分文字件数


package com.shiro.test; 
import java.text.SimpleDateFormat;
import java.util.Date; 
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; 
public class Main2 {
 public static void main(String[] args) throws Exception{
  ObjectMapper objectMapper = new ObjectMapper();
  //序列化的时候序列对象的所有属性
  objectMapper.setSerializationInclusion(Include.ALWAYS);
  //取消时间的转化格式,默认是时间戳,可以取消,同时需要设置要表现的时间格式
  objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
  objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  
  Person person = new Person(1, "zxc", new Date());
  //这是最简单的一个例子,把一个对象转换为json字符串
  String personJson = objectMapper.writeValueAsString(person);
  System.out.println(personJson);
  
  //默认为true,会显示时间戳
  objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
  personJson = objectMapper.writeValueAsString(person);
  System.out.println(personJson);
 }
}

输出的信息如下

objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)的作用


package com.shiro.test; 
import java.text.SimpleDateFormat;
import java.util.Date; 
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; 
public class Main2 {
	public static void main(String[] args) throws Exception{
		ObjectMapper objectMapper = new ObjectMapper();
		//序列化的时候序列对象的所有属性
		objectMapper.setSerializationInclusion(Include.ALWAYS);
		//如果是空对象的时候,不抛异常,也就是对应的属性没有get方法
		objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
		
		Person person = new Person(1, "zxc", new Date());
 
		String personJson = objectMapper.writeValueAsString(person);
		System.out.println(personJson);
		
		//默认是true,即会抛异常
		objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
		personJson = objectMapper.writeValueAsString(person);
		System.out.println(personJson);	
	}
}

对应的person类此时为


package com.shiro.test; 
import java.util.Date; 
public class Person { 
	private Integer id;
	private String name;
	private Date birthDate;
//	public Integer getId() {
//		return id;
//	}
//	public void setId(Integer id) {
//		this.id = id;
//	}
//	public String getName() {
//		return name;
//	}
//	public void setName(String name) {
//		this.name = name;
//	}
//	public Date getBirthDate() {
//		return birthDate;
//	}
//	public void setBirthDate(Date birthDate) {
//		this.birthDate = birthDate;
//	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", birthDate=" + birthDate + "]";
	}
	public Person(Integer id, String name, Date birthDate) {
		super();
		this.id = id;
		this.name = name;
		this.birthDate = birthDate;
	}	
	public Person() {
		// TODO Auto-generated constructor stub
	}
}

结果如下


package com.shiro.test; 
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; 
public class Main2 {
	public static void main(String[] args) throws Exception{
		ObjectMapper objectMapper = new ObjectMapper();
		//序列化的时候序列对象的所有属性
		objectMapper.setSerializationInclusion(Include.ALWAYS);
		//反序列化的时候如果多了其他属性,不抛出异常
		objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
		
//		Person person = new Person(1, "zxc", new Date());
 
//		String personJson = objectMapper.writeValueAsString(person);
//		System.out.println(personJson);
		
		//注意,age属性是不存在在person对象中的
		String personStr = "{\"id\":1,\"name\":\"zxc\",\"age\":\"zxc\"}";
		
		Person person = objectMapper.readValue(personStr, Person.class);
		System.out.println(person);
		
		//默认为true
		objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
		person = objectMapper.readValue(personStr, Person.class);
		System.out.println(person);		
	}
}

执行后的结果如下

这些便是这几个属性的作用所以,由于第一个比较简单我就这样说一下吧

Include.ALWAYS 是序列化对像所有属性

Include.NON_NULL 只有不为null的字段才被序列化

Include.NON_EMPTY 如果为null或者 空字符串和空集合都不会被序列化

然后再说一下如何把一个对象集合转换为一个 Java里面的数组


package com.shiro.test; 
import java.util.ArrayList;
import java.util.Date;
import java.util.List; 
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper; 
public class Main2 {
	public static void main(String[] args) throws Exception{
		ObjectMapper objectMapper = new ObjectMapper();
		//序列化的时候序列对象的所有属性
		objectMapper.setSerializationInclusion(Include.NON_DEFAULT);
		
		Person person1 = new Person(1, "zxc", new Date());
		Person person2 = new Person(2, "ldh", new Date());
		
		List<Person> persons = new ArrayList<>();
		persons.add(person1);
		persons.add(person2);
		
		//先转换为json字符串
		String personStr = objectMapper.writeValueAsString(persons);
		
		//反序列化为List<user> 集合,1需要通过 TypeReference 来具体传递值
		List<Person> persons2 = objectMapper.readValue(personStr, new TypeReference<List<Person>>() {});
		
		for(Person person : persons2) {
			System.out.println(person);
		}
		
		//2,通过 JavaType 来进行处理返回
		JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Person.class);
		List<Person> persons3 = objectMapper.readValue(personStr, javaType);
		
		for(Person person : persons3) {
			System.out.println(person);
		}
	}
}

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

--结束END--

本文标题: ObjectMapper 如何忽略字段大小写

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

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

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

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

下载Word文档
猜你喜欢
  • ObjectMapper 如何忽略字段大小写
    ObjectMapper 忽略字段大小写 核心代码: ObjectMapper mapper = new ObjectMapper(); mapper.configure(Des...
    99+
    2022-11-12
  • ObjectMapper怎么忽略字段大小写
    本篇内容主要讲解“ObjectMapper怎么忽略字段大小写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ObjectMapper怎么忽略字段大小写”吧!ObjectMapper 忽略字段大小写...
    99+
    2023-06-20
  • php如何忽略大小写的进行字符串替换
    这篇文章主要介绍php如何忽略大小写的进行字符串替换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!忽略大小写替换的方法:1、使用str_ireplace()函数,语法“str_ireplace(查找值,替换值,字符串...
    99+
    2023-06-15
  • 如何设置Bash Shell中忽略大小写
    这篇文章主要讲解了“如何设置Bash Shell中忽略大小写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何设置Bash Shell中忽略大小写”吧!/.inputrc 设置:代码如下:#...
    99+
    2023-06-09
  • python 字符串比较忽略大小写的方法
    A.正则表达式,使用IGNORECASE标志 >>> import re >>> m = re.search('multi', 'A mUltiCased string', re.IGNOREC...
    99+
    2023-01-31
    大小写 字符串 方法
  • golang如何临时忽略struct字段
    这篇文章主要介绍了golang如何临时忽略struct字段,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。临时忽略struct字段type&n...
    99+
    2022-10-19
  • golang如何临时忽略掉Password字段
    这篇文章将为大家详细讲解有关golang如何临时忽略掉Password字段,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。临时忽略掉Password字段json.Marsh...
    99+
    2022-10-19
  • golang如何临时忽略掉Password字段并且添加token字段
    这篇文章主要为大家展示了“golang如何临时忽略掉Password字段并且添加token字段”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“golang如何临时...
    99+
    2022-10-19
  • jackson反序列化时如何忽略不需要的字段
    目录jackson反序列化忽略字段解决办法很简单jackson忽略指定属性例子jackson反序列化忽略字段 JSON字符串中含有我们并不需要的字段,那么当对应的实体类中不含有该字段...
    99+
    2022-11-13
  • Intellijidea代码提示忽略字母大小写和常用快捷键及设置步骤
    目录Intellij idea 代码提示忽略字母大小写和常用快捷键及设置一.设置代码忽略字母大小写步骤二.快速生成main方法设置三.快速生成输出语句System.out.print...
    99+
    2023-02-21
    idea 忽略字母大小写 idea常用快捷键 idea代码提示忽略字母大小写
  • Mysql如何使得字段内容不区分大小写
    本篇内容介绍了“Mysql如何使得字段内容不区分大小写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • php 小写数字如何转大写
    这篇文章给大家分享的是有关php 小写数字如何转大写的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php小写数字转大写的实现方法:首先创建一个PHP示例文件;然后通过“private function getCh...
    99+
    2023-06-08
  • Intellij idea代码提示忽略字母大小写和常用快捷键设置的方法是什么
    本篇内容介绍了“Intellij idea代码提示忽略字母大小写和常用快捷键设置的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-07-05
  • php字符串小写如何转大写
    这篇文章主要介绍“php字符串小写如何转大写”,在日常操作中,相信很多人在php字符串小写如何转大写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php字符串小写如何转大写”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • javascript如何将大写字母转为小写
    本篇内容主要讲解“javascript如何将大写字母转为小写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript如何将大写字母转为小写”吧! ...
    99+
    2022-10-19
  • javascript如何将小写字母转为大写
    这篇文章主要介绍“javascript如何将小写字母转为大写”,在日常操作中,相信很多人在javascript如何将小写字母转为大写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • javascript如何把字符串大写转为小写
    本篇内容介绍了“javascript如何把字符串大写转为小写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-19
  • 如何在mybatis中将字段名转换为小写
    本篇文章为大家展示了如何在mybatis中将字段名转换为小写,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、什么是Mybatis?MyBatis是一个优秀的持久层框架,是一个半ORM(对象关系映射...
    99+
    2023-06-06
  • 如何利用python判断字母大小写
    今天小编给大家分享的是如何利用python判断字母大小写,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。方法一使用Python中的内置函数isupper()和islower()来判断一...
    99+
    2023-08-03
  • c# 如何将字符串转换为大写或小写
    目录c#将字符串转换为大写或小写c#大小写转换合集1.在代码中以 Excel 加日期的算法2.数字转大写3.日、月、日期转大写4.人民币金额小写转大写5.获取中文字拼音首字母6.银行...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作