【发布时间】:2020-03-09 08:06:40
【问题描述】:
我正在使用 org.json lib 将简单的 XML 转换为 JSON:
import org.json.JSONObject;
import org.json.XML;
public class TestJson {
public static void test_number() {
String xml = "<BALANCE>32032033.10</BALANCE>";
JSONObject jsonObj = XML.toJSONObject(xml);
String json_str = jsonObj.toString(4);
System.out.println(String.format("%s\n----\n%s", xml, json_str));
}
public static void main(String[] args) {
try {
test_number();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的结果:
<BALANCE>32032033.10</BALANCE>
----
{"BALANCE": 3.20320331E7}
如您所见,数字的格式从正常变为科学。如何保留数字格式?我希望将 JSON 视为:
{"BALANCE": 32032033.10}
或者最好是字符串:
{"BALANCE": "32032033.10"}
我使用来自json-20190722.jar的org.json
【问题讨论】:
-
3.20320331E7 和 32032033.1 如果被视为数字,则完全相同。您的代码或任何客户端代码都不应该关心。
-
当然它们与数字相同,但不适用于 grep 或其他文本实用程序。
-
那么是的,字符串是要走的路。数字应该这样对待。
-
@Michał Niklas,您使用的是哪个版本的 org.json 库?
-
@Michał Niklas,如果您可以将 org.json 库版本升级到高于 20090211 的版本,您现有的代码将可以工作(看来您使用的是旧版本,即可能是2009 发布版如上图)发布。