我必须使用java将xml字符串转换为json对象,这是一个非常常见的要求,我使用下面的代码非常精细
content = "<books>
<science>
<name>volcano</name>
</science>
<science>
<name>gravity</name>
</science>
</books>"
JSONObject xmlJSONObj = XML.toJSONObject(content);
String jsonPrintString = xmlJSONObj.toString();
System.out.println(jsonPrintString);
输出如下:
{
"books": {
"science": [
{ "name": "volcano" },
{ "name": "gravity" }
]
}
}
现在假设我的输入内容字符串类似于下面的
<books>
<science>
<name>volcano</name>
</science>
</books>
我仍然需要输出
{
"books": {
"science" : [
{ "name" : "volcano" }
]
}
}
其中元素科学仍然表示为列表,因为我需要将此json作为输入提供给需要元素科学作为列表的工具,如果输出为
{
"books": {
"science": { "name": "volcano" }
}
}
它失败了,因为科学不是一个清单。请给我一些提示。提前致谢。
答案 0 :(得分:0)
这不是Java问题,而是XML问题。仅仅根据输入的XML数据,转换器无法确定“科学”是否与科学相关。 element是单个或多个值。上面的代码没有错。它只是没有足够的信息,因此做了错误的假设。所需要的是这些文件结构的定义。 DTD或XML架构定义。一旦有了这样的定义,您甚至可以使用更复杂的方法(如JAXB)来正确解析XML。序列化为JSON将是一件小事。