FasterXML:无法将表单XML反序列化为POJO



我正在尝试反序列化XML。

<server>
    <url>localhost</url>
    <port>8080</port>
</server>

至POJO

class Storage {
    private Server server;
}
class Server {
    private String url;
    private Integer port;
}

这是我的防火代码

resources = new FileInputStream("/resources/config/" + file);
mapper = new ObjectMapper();
storage = mapper.readValue(resources, Storage.class);

但它不起作用。

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')

我试图将JAX-B注释添加到Storage和Server类中,但出现了相同的错误。

UPD

当我添加我收到的com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "url"mapper = new XmlMapper();

首先,ObjectMapper实例用于反序列化JSON。所以您将无法按原样使用它。请使用XmlMapper

其次,XML的根<server>包含两个元素<url><port>。但是你的根Java类型,Storage

storage = mapper.readValue(resources, Storage.class);

只包含一个server。因此,您需要一个包装器元素作为XML中的根元素

<Storage>
    <server>
        <url>localhost</url>
        <port>8080</port>
    </server>
</Storage>

另外,我想你是指

private Server url;

成为

private String url;

相关内容

  • 没有找到相关文章

最新更新