加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java中将XML转换为JSON并避免解析器尝试将String解析为数

发布时间:2020-12-15 02:10:23 所属栏目:Java 来源:网络整理
导读:我正在使用org.json. XML库来解析 XML到 JSON. http://www.json.org/javadoc/org/json/XML.html 在我的XML文档中,有一个使用[0-9] [a-z]随机生成的ID字段.它应该是一个字符串.一切正常,直到有这个不幸的ID 123456789e1234恰好是一个数字的科学记数. 这是一段
我正在使用org.json. XML库来解析 XML到 JSON. http://www.json.org/javadoc/org/json/XML.html

在我的XML文档中,有一个使用[0-9] [a-z]随机生成的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);
    }
}

这是例外:

org.json.JSONException: JSON does not allow non-finite numbers.

XML lib toJson()方法首先尝试将String转换为Integer,Long或Double,如果没有,它会放弃将其解析为数字并将其视为String.在这种情况下,String 123456789e1234可解析为Double.后来当lib通过Double.isInfinite()检查double是否为无穷大时,它会抛出JSONException,因为很明显123456789e1234大于Double的有限标准.

如何强制它不要将值解析为数字?在这种情况下,有没有正确将XML转换为JSON的java库?

解决方法

试试这个 …

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();
    }
}
}

产量

-------- XML Detected -------- 
 -------- JSON created Successfully -------- 
{"MyXML":{"ID":"123456789e1234"}}

获得Conversion Box罐子….

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读