Jackson XML到JSON没有正确格式化列表

时间:2015-11-09 16:39:56

标签: java json xml jackson

我正在将原始XML输入转换为JSON,并且我遇到了所需的输出结构问题(列表未正确显示)。导入的XML结构可能与下面的示例不同,因此使用POJO并且只是注释是不可行的。下面的示例XML输入:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<gang>
    <id>435dfb3f-1129-4375-b0f9-09955d7434cc</id>
    <name>Brew's Crews</name>
    <members>
        <member>
            <member>d3433b1c-a93d-4af1-b698-89fcd921e48d</member>
            <dateJoined/>
        </member>
        <member>
            <member>8ac9f5bc-5710-4cb1-a75d-839e211f0286</member>
            <dateJoined/>
        </member>
    </members>
    <anthem/>
    <logo>http://localhost:8080/cloud/master-index-record/raw/58338b91-2390-44a7-ac31-581c5dd921e1</logo>
</gang>

我正在使用Jackson将XML转换为JSON(XML已经是一个字符串,并由&#39;结果&#39;变量表示)

XmlMapper xmlMapper = new XmlMapper();
Object entry = xmlMapper.readValue(result, Object.class);   
ObjectMapper jsonMapper = new ObjectMapper();
return  jsonMapper.writeValueAsString(entry);

生成以下JSON:

{
  "id": "435dfb3f-1129-4375-b0f9-09955d7434cc",
  "name": "Brew's Crews",
  "members": {
    "member": {
      "member": "8ac9f5bc-5710-4cb1-a75d-839e211f0286",
      "dateJoined": null
    }
  },
  "anthem": null,
  "logo": "http://localhost:8080/cloud/master-index-record/raw/58338b91-2390-44a7-ac31-581c5dd921e1"
}

我的问题是&#39;成员&#39;元素应该分组在JSON数组中,如下所示:

"members":[{"member":blah,"dateJoined":null},{"member":blah2,"dateJoined":null}]

但它们不是......是否需要对XML映射器或对象映射器进行特定配置才能实现这些预期结果?

1 个答案:

答案 0 :(得分:1)

杰克逊一般无法处理formly-field等广义类型。当你这样做 -

Object

杰克逊不知道它应该反序列化的对象的结构。

你可以试试这个 -

Object entry = xmlMapper.readValue(result, Object.class);