parseFloat gson json字符串

时间:2013-12-15 17:54:56

标签: json jsp servlets command gson

使用gson从json序列化/反序列化时,我有一个问题显示为float。相反,它删除了浮点,因此不显示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);
}

}

class 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"));
                            });
                        }

                    });
                }); 

1 个答案:

答案 0 :(得分:0)

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

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

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

> 1234.0000.toString()
"1234"

如果要格式化显示货币,则需要考虑字符串。如果你在客户端上执行此操作,那么jQuery需要this plugin之类的内容,或者请参阅here获取Java。