【问题标题】:parseFloat gson json stringparseFloat gson json 字符串
【发布时间】:2013-12-15 17:54:55
【问题描述】:

在使用 gson 对 json 进行序列化/反序列化时,将值显示为浮点数时出现问题。相反,它会删除浮点数,而不是显示 fx。 745.0 是显示 745。知道为什么吗? 下面是通过命令模式生成的后端代码:

public String execute(HttpServletRequest request, HttpServletResponse response, CurrencyClient client) {

    String currency = client.findAll_JSON(String.class);

    Gson gson = new Gson();

    Currency[] currencies = gson.fromJson(currency, Currency[].class); 
    System.out.println("currencies " + currencies[0].getRate());
    response.setContentType("application/json;charset=UTF-8");
    try (PrintWriter pw = response.getWriter()) {
        //System.out.println("JSON " + currencies);

        MyObject myObject = new MyObject();
        for (Object c : currencies) {
           myObject.add((gson.toJson(c)));
        }
        System.out.println("value of rate: " + gson.toJson(myObject.getCurrencies()));
        pw.println(gson.toJson(myObject)); 

        pw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return super.execute(request);
}

}

类 MyObject {

ArrayList<Object> currencies = new ArrayList<Object>();

public MyObject() {
}
public void add(Object e){
    this.currencies.add(e);
}
public Object getCurrencies() {
    return currencies;
}

public void setCurrencies(ArrayList<Object> currencies) {
    this.currencies = currencies;
}

以及客户端代码:

            $(document).ready(function() {



                    $.ajax({

                        url: "Controller", 
                        cache: false,
                        dataType: "json",
                        data: {command: 'getCurrencyRates'}, 
                        success: function(data) { 

                            $.each(data.currencies, function(index, value) { 

                              var v = JSON.parse(value);  


                                console.log(rate);

                                $("<tr><td>" + v.code + "</td><td>" + v.description + "</td><td>" + v.rate + "</td></tr>")
                                        .appendTo($("table"));
                            });
                        }

                    });
                }); 

【问题讨论】:

    标签: json jsp servlets command gson


    【解决方案1】:

    JavaScript 只有一个名为 Number 的数字类型。它与 Java double 类型拥有相同的范围。 JSON 也是如此。

    当您将值与字符串连接时,会在数字上调用toString() 方法。 Number.toString() 的工作原理在 9.8.1 ToString 应用于 the standard 中的数字类型中定义。

    基本上,如果小数位不重要,它不会打印小数位。从控制台:

    > 1234.0000.toString()
    "1234"
    

    如果您正在格式化货币以进行显示,则需要考虑字符串。如果您在客户端上执行此操作,您将需要类似 this plugin 的 jQuery 或查看 here 的 Java。

    【讨论】:

    • 我可以使用 v.rate.toFixed(2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多