【发布时间】:2019-10-20 06:23:30
【问题描述】:
如何将所有 JSON 行输出到一个 XML 输出中?我的代码只输出第一行 JSON。
我有一个数据文件,其中包含多个 JSON 行(每个 JSON 行末尾的 CR 和 LF):
{"valueName":"GPS_latitude","valueType":"-1","value":"39.26842508","objectID":"charger_80","timestamp":"1556841594000"}
{"valueName":"GPS_longitude","valueType":"-1","value":"-76.60410104","objectID":"charger_80","timestamp":"1556841594000"}
{"valueName":"GPS_altitude","valueType":"-1","value":"13","objectID":"charger_80","timestamp":"1556841594000"}
我的 java src 看起来像:
import org.json.JSONObject;
import org.json.XML;
//Reads in the file and makes it one big string (which works correctly)
String jsonData = readFile("testfilePD.json");
//Converts the JSON string into XML but stops after first line.
String jsonBody = Convert_JSON_TO_XML.convert_json(jsonData); System.out.println(jsonBody);
//I'm using the XML library to convert
public static String convert_json(String json_value) {
String xml = "<node>";
try {
JSONObject jsoObject = new JSONObject(json_value);
xml = xml + XML.toString(jsoObject);
} catch (Exception e) {
System.out.println(e);
}
xml = xml + "</node>";
return xml;
}
或者,有没有更好的 JSON 到 XML 转换库?或者我如何修改 XML 库以读取我的整个文件并将它们正确地输出到一个大的 XML 文件中。我最终将此 xml 文件发送到 Web 服务 API 以供摄取。我被卡住了。
输出应该是这样的:
<?xml version="1.0"?>
<node>
<valueName>GPS_latitude</valueName>
<valueType>-1</valueType>
<value>39.26842508</value>
<objectID>charger_80</objectID>
<timestamp>1556841594000</timestamp>
</node>
<node>
<valueName>GPS_longitude</valueName>
<valueType>-1</valueType>
<value>-76.60410104</value>
<objectID>charger_80</objectID>
<timestamp>1556841594000</timestamp>
</node>
【问题讨论】:
-
你对提供的源文件有影响吗?因为目前,您的输入不是有效的 JSON,但是您可以通过附加“[”轻松构建 JSON 数组,每行以
,结尾,并在文件末尾放置] -
我无法影响源文件。它来自一台 GPS 设备,需要转换为 XML(如果我需要在 XML 输出中添加 node0、node1 等,那没关系)......只是在转换第一行 JSON 时遇到了麻烦。
-
好吧,鉴于您更新的问题,它要复杂得多,因为独立的 json 对象现在不再是换行符分隔。
-
其实我刚刚在notepad++中检查了一下,发现每行JSON的末尾都有一个CR LF char。我将输入文件调整为应有的样子(我的 IDE(intellij)将其显示为 JSON)