使用Jackson XML Mapper获取列表

时间:2014-02-20 14:47:55

标签: java json mongodb mongo-jackson-mapper

我目前正在与Jackson合作,从在线位置读取XML文件,将其映射到对象,然后使用Object Mapper将该对象插入MongoDB。

目前我的数据集看起来像这样:

<sensors>
    <sensor id="000" name="Sensor Name" refreshRate="2000">
        <location latitude="12.3456" longitude="-67.890"/>
    </sensor>
<sensor id="000" name="Sensor Name" refreshRate="2000">
        <location latitude="12.3456" longitude="-67.890"/>
    </sensor>
</sensors>

如果我执行以下操作:

List entries = xmlMapper.readValue(conn.getInputStream(),List.class);

我找回包含这些项目的LinkedHashMap列表。但是,如果我可以将其映射回我已经创建的传感器类,我更愿意。

这个传感器类是我在与Mongo交互时使用的类,它看起来像这样:

@Document(collection = "Sensor")
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName="sensors")
public class Sensor {

    @Id
    private int id;

    String name = "";
    long refreshRate = "";
    Location location;

    ...
}

我尝试过投射或映射到Sensor;但是,这不起作用。缺少的步骤是什么?我读过的所有文档和教程似乎只处理单个条目的简单实例。

1 个答案:

答案 0 :(得分:3)

当您使用通用List时,我猜Map是您数据的默认表示。

如果你想告诉映射器,你的数据应该如何表示,我会用这样的东西:

List<Sensor> entries = xmlMmapper.readValue(conn.getInputStream(), new TypeReference<List<Sensor>>() {});

我无法验证此时是否编译,但我希望它有所帮助。

有关TypeReference的详细信息,请参阅here