【问题标题】:Org.json Big Decimal supportorg.json 大十进制支持
【发布时间】:2020-07-08 11:54:51
【问题描述】:

org.json 库不支持 BigDecimal。知道如何以及从哪里可以获得最新的图书馆吗??

我正在尝试使用 org.json 库将 XML 转换为 JSON。但似乎不存在 Big Decimal 支持。知道如何将数据转换为 BigDecimal 类型的实例吗?

我也试过 20200518 版本。

【问题讨论】:

    标签: java json org.json


    【解决方案1】:

    如果没有您尝试解析的 xml,就很难判断出了什么问题。 这是一个带有虚拟 xml 的工作示例:

    import org.json.JSONObject;
    import org.json.XML;
    import java.math.BigDecimal;
    
    public class XMLtoJSON {
          public static String TEST_XML_STRING =
            "<?xml version=\"1.0\" ?><test>1234123456789.01</test>";
          public static void main(String[] args) {
                JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
                System.out.println("Json parsed from XML: " + xmlJSONObj);
                BigDecimal content = xmlJSONObj.getBigDecimal("test");
                System.out.println("Big decimal value: " + content);
          }
    }
    

    输出如预期:

    Json parsed from XML: {"test":1.23412345678901E12}
    Big decimal value: 1234123456789.010009765625
    

    【讨论】:

    • 感谢您的回复。我正在按照您展示的方式将 XML 转换为 Json。然后转换为字符串并传递给另一个应用程序。所以在这里它在转换为字符串时发送指数值。那么有没有办法发送原始值?
    • 所以,如果我理解正确,您不想将数字发送为“1.23E12”,因为下一个应用程序无法将其解析为数字。在这种情况下,获取数字为 BigDecimal 后,将值覆盖为纯字符串:xmlJSONObj.put("test", content.toPlainString());
    • 但是有大约 1000 个属性,所以为所有人做这件事会很困难。库中是否有任何内置功能可以解决这个问题?
    • 据我所知,这是不可能的。恐怕你必须自己做。不过,应该不难。您可以使用 xmlJSONObj.keySet() 获得所有 1000 个属性,然后循环它们。
    猜你喜欢
    • 2015-09-03
    • 2019-09-19
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2012-04-25
    • 2015-06-25
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多