为了账号安全,请及时绑定邮箱和手机立即绑定

JSONArray(jsonstring) 如果为 0 则丢弃小数

JSONArray(jsonstring) 如果为 0 则丢弃小数

宝慕林4294392 2023-04-13 17:19:04
我有一个带有浮动值的 json 字符串: {"foo":10.0,"bar":12.005} 我需要使用它来转换它JSONObject(jsonstring)并且我需要保留小数,但是如果它们为零,json 数组会丢弃它们。结果看起来像 {"foo":10,"bar":12.005}我希望我可以提供额外的参数来控制数据类型,但根据 https://developer.android.com/reference/org/json/JSONObject 没有这样的选项。我还搜索了 google 和 stackoverflow,但我找不到任何类似的问题。
查看完整描述

5 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

JSONObject 始终将所有内容都视为对象,因此必须通过解析将它们转换为浮点数。


     String json = "{\"foo\":10.0}";

     try{

            JSONObject jo = new JSONObject(json); 

            float f = Float.parseFloat(jo.get("foo").toString());

            System.out.println(f);

        }

     catch(Exception e){

            // Some parsing exception occurs

        }

希望这能解决问题。


JSONObject 还支持获取各种数据类型(如 double、int、boolean)中的项目的方法


   double d = jo.getDouble("foo");

   System.out.println(d); // gave me 10.0

同样我们有


   int i = getInt("name"); // which returns an integer 

   boolean b = getBoolean("name"); // Automatically parses 


查看完整回答
反对 回复 2023-04-13
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

无法从 JSON.parse 或 eval 中获取位数。即使 IBM 的十进制提案已被 EcmaScript 委员会采纳,该数字仍将被解析为 IEEE 754 浮点数。


查看完整回答
反对 回复 2023-04-13
?
千万里不及你

TA贡献1784条经验 获得超9个赞

对于 10.0,它会将值作为整数添加到 JSON 中,如果你想要它带有小数,那么首先你需要将它转换为字符串,然后你需要将字符串值放入 JSON 中。


val foo = 10.0

val bar = 12.005

val strFoo = foo.toString();

val jsonObject = JSONObject()

jsonObject.put("foo",strFoo)

jsonObject.put("bar", bar)


查看完整回答
反对 回复 2023-04-13
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这是预期的行为。

DECIMAL 字段转换为 JSON NUMBER 数据类型。默认情况下,此类型会修剪尾随零。

JSON 的客户端/接收方决定需要显示多少位小数并设置正确的显示格式。


查看完整回答
反对 回复 2023-04-13
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

我猜,这不是JSON数组的问题,而是语言从float到int的类型转换的问题。


使用类似于此的格式将浮点数格式化为字符串String.format("%,.2f", val);


编辑


工作流程将如下所示:


if(Math.ceil(val)==val){ //a number with no fractional points


    String str = String.format("%,.2f", val);

}

else //use_the_floating_number_as_usual


查看完整回答
反对 回复 2023-04-13
  • 5 回答
  • 0 关注
  • 235 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信