【发布时间】:2018-11-02 06:07:28
【问题描述】:
鉴于我有这个 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<op>update</op>
<path>someString</path>
<value>12345</value>
</Root>
我想要这个 JSON 格式的输出:
[{ "op":"update", "path":"someString", "value":"12345" }]
我已经尝试了以下代码:
package jsonconvertor;
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
public class JSONConvertor {
public static void main(String[] args) {
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root><op>update</op><path>someString</path><value>12345</value></Root>";
String output = "";
XMLSerializer xml = new XMLSerializer();
JSON jObj = xml.read( input );
output = jObj.toString();
System.out.println("My JSON:\n" + output);
}
}
当我运行该代码时,我得到以下响应:
{"op":"update","path":"someString","value":"12345"}
但是您会注意到缺少前导 '[' 和结束 ']'。
当我尝试将代码中的 XML“输入”字符串更改为以下内容时:
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root class=\"object\"><op>update</op><path>someString</path><value>12345</value></Root>";
这是有道理的,因为 itRoot 是一个开始的对象,所以我尝试将“输入”字符串更改为“数组”:
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root class=\"array\"><op>update</op><path>someString</path><value>12345</value></Root>";
然后我得到以下信息:
["update","someString","12345"]
我错过了什么?我想要 class="object" 时得到的输出,但是我希望它用方括号括起来。我希望输出看起来像帖子顶部的示例。
【问题讨论】:
-
试试这个:String input2 = "
";update someString 12345 -
感激不尽! ..这是我的问题的解决方案!如果您再次添加它作为答案,我肯定会接受它作为我正在寻找的解决方案!
-
是的,我添加了答案,您可以接受。乐意效劳! :)
标签: java json xmlserializer