【问题标题】:Decimal formatting issue in net.sf.json Objectnet.sf.json 对象中的十进制格式问题
【发布时间】:2020-02-19 18:36:29
【问题描述】:

我们正在使用编译net.sf.json-lib:json-lib:2.4:jdk15

String requestBody =     {"resconfirmsvid":28,"reservationno":"H0028W090718","component":"Hotel","partnerid":2,"total":169002.15,"internalnote":"","currencycode":"USD","history":[{"id":"0","payment_type":"Payment","payment_method":"Cash","date":"2019-10-30","refnumber":"012525TRTY","amount":160000,"currency":"USD","component":"Hotel","resconfirmsvid":28}]}

requestBody = URLDecoder.decode(requestBody, "UTF-8");
JSONObject request = JSONObject.fromObject(requestBody);

然后请求对象如下,

request = {"resconfirmsvid":28,"reservationno":"H0028W090718","component":"Hotel","partnerid":2,"total":169002.16,"internalnote":"","currencycode":"USD","history":[{"id":"0","payment_type":"Payment","payment_method":"Cash","date":"2019-10-30","refnumber":"012525TRTY","amount":160000,"currency":"USD","component":"Hotel","resconfirmsvid":28}]}

使用 fromObject 将 json 字符串转换为 json 对象后,“total” 值从 169002.15

更改为 169002.16

【问题讨论】:

    标签: java json spring-boot


    【解决方案1】:

    当我使用 net.sf.json-lib 将 json 字符串转换为 Json 对象时,我遇到了同样的问题。一旦我使用了以下 gradle 版本
    compile 'net.sf.json-lib:json-lib:2.3:jdk15' 问题已成功修复。

    【讨论】:

    【解决方案2】:

    JSON 没有指定十进制数的精度。这就是为什么建议使用字符串来代替十进制数。

    来源:Why would you use a string in JSON to represent a decimal number - dthorpe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多