我需要将某个 JSON 字符串转换为 Java 对象。我正在使用杰克逊进行JSON处理。我无法控制输入 JSON(我从 Web 服务读取)。这是我的输入 JSON:
{"wrapper":[{"id":"13","name":"Fred"}]}
下面是一个简化的用例:
private void tryReading() {
String jsonStr = "{"wrapper":[{"id":"13","name":"Fred"}]}";
ObjectMapper mapper = new ObjectMapper();
Wrapper wrapper = null;
try {
wrapper = mapper.readValue(jsonStr , Wrapper.class);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("wrapper = " + wrapper);
}
我的实体类是:
public Class Student {
private String name;
private String id;
//getters & setters for name & id here
}
我的包装类基本上是一个容器对象,用于获取我的学生列表:
public Class Wrapper {
private List<Student> students;
//getters & setters here
}
我不断收到此错误,并且“包装器”返回.我不确定缺少什么。有人可以帮忙吗?null
org.codehaus.jackson.map.exc.UnrecognizedPropertyException:
Unrecognized field "wrapper" (Class Wrapper), not marked as ignorable
at [Source: java.io.StringReader@1198891; line: 1, column: 13]
(through reference chain: Wrapper["wrapper"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException
.from(UnrecognizedPropertyException.java:53)
网友回答:
您可以使用
ObjectMapper objectMapper = getObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
它将忽略所有未声明的属性。
网友回答:
您可以使用杰克逊的类级注释:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties
class { ... }
它将忽略您在 POJO 中未定义的每个属性。当您只是在 JSON 中查找几个属性并且不想编写整个映射时非常有用。更多信息请访问杰克逊的网站。如果你想忽略任何未声明的属性,你应该写:
@JsonIgnoreProperties(ignoreUnknown = true)
网友回答:
第一个答案几乎是正确的,但需要的是更改 getter 方法,而不是字段 — 字段是私有的(而不是自动检测的);此外,如果两者都可见,则 getter 优先于字段。(也有一些方法可以使私有字段可见,但是如果您想拥有getter,那就没有多大意义了)
所以getter应该被命名,或者用:getWrapper()
@JsonProperty("wrapper")
如果您更喜欢 getter 方法名称,请按原样命名。
模板简介:该模板名称为【 JSON 字符串转换为 Java 对象:无法识别的字段,未标记为可忽略】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。