繁体   English   中英

使用不同的JSON对象名称将JSON转换为Java中的XML

[英]Convert JSON to XML in Java with different JSON object names

我有这个JSON字符串:

{
    "purpose": {
        "caption": "Purpose",
        "value": "Buy a goat"
    },
    "goatValue": {
        "caption": "Goat value",
        "value": "4500000"
    },
    "loanAmount": {
        "caption": "Loan amount",
        "value": "5000000"
    },
    "childrenInfo": [{
        "gender": {
            "caption": "Gender",
            "value": "Boy"
        },
        "provider": {
            "caption": "Provider",
            "value": "Yes"
        },
        "age": {
            "caption": "Age",
            "value": "5"
        }
    },
    {
        "gender": {
            "caption": "Gender",
            "value": "Girl"
        },
        "provider": {
            "caption": "Provider",
            "value": "No"
        },
        "age": {
            "caption": "Age",
            "value": "17"
        }
    }]
}

我想将其转换为以下xml结构:

<Row>
    <caption>Purpose</caption>
    <value>Buy a goat</value>
</Row>
<Row>
    <caption>Goat value</caption>
    <value>4500000</value>
</Row>
<Row>
    <caption>Loan amount</caption>
    <value>5000000</value>
</Row>
<Row>
    <caption>Gender</caption>
    <value>Boy</value>
</Row>
<Row>
    <caption>Provider</caption>
    <value>Yes</value>
</Row>
<Row>
    <caption>Age</caption>
    <value>5</value>
</Row>
<Row>
    <caption>Gender</caption>
    <value>Girl</value>
</Row>
<Row>
    <caption>Provider</caption>
    <value>No</value>
</Row>
<Row>
    <caption>Age</caption>
    <value>17</value>
</Row>

假定可以使用任何JSON对象名称(在这种情况下,为山羊值和借贷金额),因为无法知道JSON对象的名称。 我尝试使用Jackson ObjectMapper并将JSON字符串映射到

HashMap<String, HashMap<String, String>>

,但现在我不知道该怎么办。

有什么建议么?

您需要将JSON作为Map<String, Object>读取Map<String, Object>并创建一个由标题和值字段组成的Row对象。 之后,您需要遍历地图中的条目以区分地图和地图列表。 对于地图,这些地图需要转换为Row对象并添加到Row对象的集合中。 对于地图列表,需要在内部循环中完成相同的操作。 迭代完成后,需要将行添加到包装对象,然后可以使用XmlMapper将其转换为xml。

我已经创建了适用于您的示例的要点: https : //gist.github.com/santmatthew/8f85399ad86fb45fec0be0c5df1a9825

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM