Jackson JSON解析返回null值问题,请求正确解析方法
解决Jackson解析JSON返回null的问题
问题原因
Jackson默认遵循JavaBean命名规范,会将getFName()这类方法解析为对应的属性名fName(首字母小写),但你的JSON中对应的键是FName(首字母大写),两者无法匹配,导致Jackson无法将JSON值映射到Employee类的字段,最终输出null。另外setRole方法的参数为小写role,与字段Role的大小写不一致,也可能影响该字段的映射。
解决方案
方案一:用@JsonProperty注解指定字段对应JSON键名
在Employee类的每个字段上添加@JsonProperty注解,明确指定JSON中的键名,让Jackson精准匹配:
package Models; import com.fasterxml.jackson.annotation.JsonProperty; public class Employee { @JsonProperty("id") private int id; @JsonProperty("FName") private String FName; @JsonProperty("LName") private String LName; @JsonProperty("Role") private String Role; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFName() { return FName; } public void setFName(String FName) { this.FName = FName; } public String getLName() { return LName; } public void setLName(String LName) { this.LName = LName; } public String getRole() { return Role; } public void setRole(String role) { this.Role = role; } }
方案二:修改Jackson命名策略,匹配JSON的大小写
在创建ObjectMapper时,设置命名策略为UPPER_CAMEL_CASE,让Jackson直接匹配JSON中的大驼峰键名:
import Models.Employee; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; public class TestDataBinding { @Test public void TestDataBinding() throws IOException { ObjectMapper map = new ObjectMapper(); map.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); // 设置命名策略为大驼峰,匹配JSON键名 map.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE); Employee emp = map.readValue(new File("src/main/resources/Data/Employees.json"), Employee.class); System.out.println(emp.getFName()); System.out.println(emp.getLName()); } }
方案三:修正setter方法的参数名(规范代码)
将setRole方法的参数名改为与字段一致的Role,避免因参数名大小写不一致导致的潜在问题:
public void setRole(String Role) { this.Role = Role; }
验证
修改完成后重新运行TestDataBinding测试,即可正确输出:
Rayan Philip
内容的提问来源于stack exchange,提问作者Tom H
相关产品推荐
相关产品推荐

