Sup*_*spr 5 java xml parsing json
我正在使用 org.json.XML 库将 XML 解析为 JSON。http://www.json.org/javadoc/org/json/XML.html
在我的 XML 文档中有一个使用 [0-9][az] 随机生成的 ID 字段。它旨在成为一个字符串。一切正常,直到出现这个不幸的 ID 123456789e1234,它恰好是数字的科学记数法。这是一段测试代码:
public class XmlToJsonTest {
public static String testXML = "<MyXML><ID>123456789e1234</ID></MyXML>";
@Test
public void testXMLtoJSON() throws JSONException {
JSONObject testJsonObject = XML.toJSONObject(testXML);
}
}
Run Code Online (Sandbox Code Playgroud)
这是例外:
org.json.JSONException: JSON does not allow non-finite numbers.
Run Code Online (Sandbox Code Playgroud)
XML lib toJson() 方法首先尝试将 String 转换为 Integer、Long 或 Double,如果无效,则放弃将其解析为数字并将其视为字符串。在这种情况下,字符串 123456789e1234 可解析为 Double。稍后,当 lib 通过 Double.isInfinite() 检查 double 是否为无限时,它会抛出 JSONException,因为显然 123456789e1234 大于 Double 的有限标准。
如何强制它根本不将值解析为数字?在这种情况下,是否有任何 Java 库可以正确地将 XML 转换为 JSON?
小智 0
尝试这个 ...
import org.json.me.JSONObject;
import cjm.component.cb.json.ToJSON;
public class DummyClass
{
public static void main(String[] args)
{
try
{
String xml = "<MyXML><ID>123456789e1234</ID></MyXML>";
JSONObject obj = (new ToJSON().convertToJSON(xml));
System.out.println(obj);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出
-------- XML Detected --------
-------- JSON created Successfully --------
{"MyXML":{"ID":"123456789e1234"}}
Run Code Online (Sandbox Code Playgroud)
获取转换盒罐......