添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
呐喊的打火机  ·  ASP.NET ...·  1 年前    · 
鬼畜的椰子  ·  Android ...·  2 年前    · 

今天在测试jackson解析json串时,发现如果json串中,Key的值为大写的话,那么解析就会报错,这里给大家复现一下以及提供一种解决方案:

首先,我们建立一个实体类:这里简单定义了name,sex,age三个属性,以及get set tostring方法。​

public class Student {
	private String name;
	private String sex;
	private Integer age;
	public String getName() {
		return name;
	public String getSex() {
		return sex;
	public Integer getAge() {
		return age;
	public void setName(String name) {
		this.name = name;
	public void setSex(String sex) {
		this.sex = sex;
	public void setAge(Integer age) {
		this.age = age;
	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";

然后我们写一个测试类:​

@Test
	public void testJackson() throws Exception {
		String jsonStr = "{\"age\":20,\"name\":\"lisi\",\"Sex\":\"男\"}";
		ObjectMapper om = new ObjectMapper();
		Student stu = om.readValue(jsonStr, Student.class);
		System.out.println(stu);

这里运行,我们会报错无法识别的filed:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 

这个问题可以在我另一篇文章里找到解决方案,需要的可以详细看一下:
(https://blog.csdn.net/MrHamster/article/details/85268990)

这里直接给出解决方案,在类上加@JsonIgnoreProperties(ignoreUnknown = true),就可以忽略掉不认识的field
在这里插入图片描述
加上注解后,我们继续运行测试类,发现虽然可以正常运行了,但运行结果却是:Student [name=lisi, sex=null, age=20],sex这个字段没有被成功赋值。原因是jackson不支持大写的Key去解析,fastjson是可以成功支持这个的,fastjson会忽略大小写。

但是项目中假如已经使用了jackson,现在再进行更换,难免会提高难度,所以我们换一种方法去解决这个问题:我们在实体类的对应字段上加:@JsonProperty(value = “XXX”),这里的XXX就是大写的key,这样的话,jackson就会根据这个XXX去把值赋到实体类对应的字段中。
在这里插入图片描述

今天在测试jackson解析json串时,发现如果json串中,Key的值为大写的话,那么解析就会报错,这里给大家复现一下以及提供一种解决方案:首先,我们建立一个实体类:这里简单定义了name,sex,age三个属性,以及get set tostring方法。​public class Student { private String name; private String sex; ...
在进行项目开发过程中和其他平台进行对接,对方平台接口中的key在对接过程中出现,key大小写转变的问题,所以开发工具类,防止出现这样的问题。 下面是具体代码实现: package com.jh.jcs.framework.web.util; import java.util.Iterator; import net.sf.json.JSONArray; import net.sf.json.J...
private ObjectMapper mapper; mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); // deprecated mapper.setPropertyNamingStrategy(PropertyNamingStrateg...
首先需要下载包:jackson-databind-2.0.5.jar jackson-annotations-2.0.5.jar jackson-core-2.0.5.jar,网址在:http://wiki.fasterxml.com/JacksonDownload    或  https://github.com/FasterXML JSON:     "code": "0",
最近在项目中遇到json字符串转实体为null的问题,结果发现这次返回的json字符串key值的首字母全是大写,这就导致Jackson无法解析,转换的实体为null。 在网上找了半天,总结了三种方法: 1、将字符串中的key值为大写字母的全部替换为小写字母。 jsonResult = jsonResult.replaceAll("Body","body").replaceAll("...
面对不遵守驼峰命名规则的接口,比如属行首字母用大写,这样导致使用Jackson解析出来的对象的属性均为空,经过跟踪源码发现,是由于其根据getters方法解析的属性,属性字母都变为了小写,这就导致无法解析了出现了jackson Unrecognized field 的问题。 @Data public class JobType { private int jobType;
最近在项目中调用.NET的服务时,Jackson解析返回的json字符串时始终报错,纠结很久之后才找到原因,原来是是由于json字符串中的字母都是首字母大写,导致jackson找不到相应的KEY。 解决方法有两种: 直接将bean对象中的属性改为public,属性名命名为首字母大写,比如{"Name":"nomouse","Age":12},定义相应的bean为: pu...
你真的会用Gson吗?一个@SerializedName("email_address") public String emailAddress;多个@SerializedName(value = "emailAddress", alternate = {"email", "email_address"}) public String emailAddress;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.springframework.stereotyp...