Java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException : Unrecognized field "" not marked as ignorable

标签 java

关于如何将 XML 转换为 Java pojo 的小问题。

我有一个 super 简单但有效的 xml:

<results preview='0'>
    <messages>
        <msg type="TEST">Why this is failing</msg>
    </messages>
</results>

为了将其转换为 Java pojo,我准备了以下代码片段:

public static void main( String[] args ) throws Exception {
      ObjectMapper objectMapper = new XmlMapper();
      String sss =
              "<results preview='0'>\n" +
              "    <messages>\n" +
              "        <msg type=\"TEST\">Why this is failing</msg>\n" +
              "    </messages>\n" +
              "</results>";
      final MyPojo response = objectMapper.readValue(sss, MyPojo.class);
      System.out.println(response);
  }

使用这个 Java pojo:


public class MyPojo {
    private String preview;
    private Messages messages;

//get set

public class Messages {
    private Msg msg;

//get set

public class Msg {
    private String code;
    private String type;

//get set

然而,当我运行时,我得到:

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "" (class io.monitoring.Msg), not marked as ignorable (2 known properties: "type", "code"])
 at [Source: (StringReader); line: 3, column: 51] (through reference chain: io.monitoring.MyPojo["messages"]->io.monitoring.Messages["msg"]->io.monitoring.Msg[""])

我可以知道如何解决这个问题吗? 我对解决异常以及获取所有元素感兴趣,希望获得预览 = 0、类型 = TEST,最重要的是实际消息:为什么失败

谢谢

最佳答案

您需要告诉 xmlMapper 哪个字段是属性,哪个字段是值。请使用下面的注释 @JacksonXmlText 用于您的代码,@JacksonXmlProperty(isAttribute = true) 用于 Msg 类中的类型。像下面这样,

public class Msg {
    @JacksonXmlText
    private String code;
    @JacksonXmlProperty(isAttribute = true)
    private String type;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

关于Java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException : Unrecognized field "" not marked as ignorable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67430693/

相关文章:

java - selenium WebDriver,无需任何互联网浏览器即可工作。

java - 如何从Java中的网页获取信息?

java - 检测用 Java 读取的文件

java - Hibernate 模型类和辅助方法最佳实践

java - 在Java中打印回文

java - iText - 如果特定行位于页面底部,则在下一页上设置特定行

java - 同一组代码在 Eclipse IDE 中工作但在命令行中不工作

java - .restart smali 关键字有什么作用?

java - 如何通过 ServletContext 的属性机制使 servlet 接收到的属性可供其他 servlet 使用?

java - Swing 中的窗口大小错误或未设置