【发布时间】:2017-08-06 09:35:19
【问题描述】:
我有这个 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 对象名称(在本例中为 goatValue 和 loanAmount),因为无法知道 JSON 对象的名称。我尝试使用 Jackson ObjectMapper 并将 JSON 字符串映射到
HashMap<String, HashMap<String, String>>
,但现在我不知道该怎么办。
有什么建议吗?
【问题讨论】:
-
你有一个像 Data(Caption, Value) 这样的对象,用杰克逊你得到一个 Map
?然后,如果您在 Data 上添加 jaxb 注释,您可以将列表写入 .. ... ... 这是您的问题吗? -
解决了我的问题。
-
您最好创建一个带有字符串标题、字符串值的类,并从 JSON 中获取
的映射,然后您可以从 map.values() 创建一个 Collection可以用 jaxb 序列化为 XML。 -
好的,我有一个带有字符串标题的类 Row,值。我是否使用 ObjectMapper readValue 从 JSON 映射到 Map
?如果是这样,第二个参数应该是什么? HashMap nestedMap = jsonMapper.readValue(jsonSchemaString, ?); -
你需要使用如下类型:TypeReference
> type = new TypeReference >() {};
标签: java json xml jackson format-conversion