杰克逊与 JSON:无法识别的字段,未标记为可忽略

新手上路,请多包涵

我需要将某个 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
}

我的 Wrapper 类基本上是一个容器对象,用于获取我的学生列表:

 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)

原文由 jshree 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 646
1 个回答

您可以使用 Jackson 的类级注释:

 import com.fasterxml.jackson.annotation.JsonIgnoreProperties

@JsonIgnoreProperties
class { ... }

它将忽略您未在 POJO 中定义的每个属性。当您只是在 JSON 中查找几个属性并且不想编写整个映射时非常有用。更多信息在 杰克逊的网站上。如果你想忽略任何未声明的属性,你应该写:

 @JsonIgnoreProperties(ignoreUnknown = true)

原文由 Ariel Kogan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题