JSONObject删除小数点(如果是整数)

JSONObject删除小数点(如果是整数),json,rest,double,decimal,Json,Rest,Double,Decimal,使用rest服务,我们使用JSON传输值 在某个时刻,我们需要决定输入值是长还是双精度。当 Double d = 17.0; System.out.println("toString(): " + d.toString()); 将导致 toString(): 17.0 将值包装到JSONObject中时,零和点将被删除: JSONObject jo = new JSONObject(); jo.put("myDouble", d); System.out.println(jo.toStri

使用rest服务,我们使用JSON传输值

在某个时刻,我们需要决定输入值是长还是双精度。当

Double d = 17.0;

System.out.println("toString(): " + d.toString());
将导致

toString(): 17.0
将值包装到JSONObject中时,零和点将被删除:

JSONObject jo = new JSONObject();
jo.put("myDouble", d);
System.out.println(jo.toString());
输出:

{"myDouble":17}
rest服务基本上有一个EAV存储,因此它不应该通过给定的ValueNAME来确定类型。我测试了2个JSON实现,它们都有相同的行为


我是否可以在JSONObject中添加十进制值,而不必为其创建自己的实现?

值得称赞的是Perception的评论:

使用不同的JSON库(JSON Simple、Gson、Jackson)。在序列化浮点数时,上述所有参数保留精度的小数点后一位


使用了JSON Simple,它按预期工作。

并且您不能存储d.toString()?jo.put(“myDouble”,d.toString())@加皮:啊,你说得对!:)这是为了我的目的,但ofc。这只是一个解决办法。(那么ofc.存储的对象不是Double类型,而是一个字符串,如果您继续使用json对象或做一些数学计算等,则该字符串可能不好。请使用不同的json库(json Simple、Gson、Jackson)。对浮点数进行序列化时,上述所有参数保留精度的小数点后一位。@Perception Perfect,
JSON Simple
起到了作用。(之前测试过activiti和primefaces JSONObject)