Android - 如何使用 java 将大数字从 jsonobject 转换为字符串?

Android - How can I convert big number to string from jsonobject using java?

提问人:Samet Topal 提问时间:10/30/2023 更新时间:10/30/2023 访问量:40

问:

我有一个来自 Web 服务的响应,这个响应是一个 json 类型的字符串。我在这里使用 obj.getString() 获取STHAR_GCMIK值。

此代码最多可以正常工作 6 位值,但对于值 4000000,它返回 4.0E+7。我尝试了不同的解决方案,但失败了。如何按原样显示此处的值?


private AttrsSiparis parseSiparisBilgisi(String data) {
        AttrsSiparis siparisBilgileri = new AttrsSiparis();
        try {
            JSONArray jsonArray = new JSONArray(data);
            for(int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject obj = jsonArray.getJSONObject(i);
                Log.i(Constants.TAG, "Irsaliye Result Parse : STHAR_GCMIK " + obj.getString("STHAR_GCMIK"));

                //siparisBilgileri.miktarlar.add(obj.getString("STHAR_GCMIK"));
                siparisBilgileri.miktarlar.add(new BigDecimal(obj.getString("STHAR_GCMIK")).toString());
                
            }
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
        return siparisBilgileri;
    }

java android json 类型转换

评论

1赞 Lajos Arpad 10/30/2023
如果只运行,它是否正确显示?或者,换句话说,显示错误是否源于转换为 ?obj.getString("STHAR_GCMIK")BigDecimal
0赞 Samet Topal 10/30/2023
感谢您的评论。如果我只运行,它会将 4000000 转换为 4.0E+7 并添加到列表中。我认为getString()正在这样做。obj.getString("STHAR_GCMIK")
0赞 Lajos Arpad 10/30/2023
如果通过调试器运行或执行此操作,则会看到什么?obj.getObject("STHAR_GCMIK")obj.getLong("STHAR_GCMIK")

答:

1赞 sweak 10/30/2023 #1

如何按原样显示此处的值?

我猜你说的是显示已经解析的.如果是这样,那么如果您正在记录或打印它,它将使用其 toString() 方法。此方法默认使用科学记数法。BigDecimal

如果你想按原样显示数字,你必须使用 toPlainString() 方法 - 它不使用科学记数法。

评论

0赞 Samet Topal 10/30/2023
非常感谢你,先生。我首先将传入的数据转换为双精度类型,然后将其格式化为字符串类型,从而解决了此错误。siparisBilgileri.miktarlar.add(String.format("%.0f",Double.parseDouble(obj.getString("STHAR_GCMIK"))));
1赞 Lajos Arpad 10/30/2023 #2

您可以将其格式化为 via,然后将其转换为 .double.getDouble("STHAR_GCMTK")String

评论

1赞 Samet Topal 11/1/2023
我用双重解析解决了问题,然后按照你说的格式化:siparisBilgileri.miktarlar.add(String.format("%.0f",Double.parseDouble(obj.getString("STHAR_GCMIK"))));