今天在测试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.fast
json.
JSON;
import com.alibaba.fast
json.
JSONArray;
import com.alibaba.fast
json.
JSONObject;
import org.springframework.stereotyp...