使用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"));
});
}
});
});
答案 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。