[英]gson.toJson(object) BigDecimal Precision Lost
當我將Object轉換為Json時,我遇到了BigDecimal Precision丟失的問題。
讓我說我有Pojo課,
public class DummyPojo {
private BigDecimal amount;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
}
現在我正在為Pojo設置值,然后轉換為JSON
public static void main(String[] args) {
BigDecimal big = new BigDecimal("1000.0005");
JSONObject resultJson = new JSONObject();
DummyPojo summary = new DummyPojo();
summary.setId("A001");
summary.setAmount(big);
resultJson.put("summary",new Gson().toJson(summary));
String result = resultJson.toString();
System.out.println(result);
}
第一次測試 - 正確輸出
Output -> {"summary":{"amount":1000.0005,"id":"A001"}}
第二次測試 - 輸出錯誤(丟失BigDecimal精度)
BigDecimal big = new BigDecimal("1234567.5555"); //Changed the value
Output -> {"summary":{"amount":1234567.5,"id":"A001"}}
第3次測試 - 輸出錯誤(丟失BigDecimal精度)
BigDecimal big = new BigDecimal("100000.0005"); //Changed the value
Output -> {"summary":{"amount":100000,"id":"A001"}}
令人驚訝的是,每當BigDecimal值更長時,它也會截斷小數位。 json coversion有什么問題。 你能幫我解決一下嗎?
我認為你將Java EE 7的JSONObject與GSON的JsonObject混合在一起。 Gson似乎沒有你提到的問題:
public static void main(String[] args) {
BigDecimal big = new BigDecimal("1234567.5555");
DummyPojo summary = new DummyPojo();
JsonObject resultJson = new JsonObject(); //this is Gson not Java EE 7
summary.setId("A001");
summary.setAmount(big);
resultJson.addProperty("summary", new Gson().toJson(summary));
System.out.println(resultJson.toString());
//Outputs: {"summary":"{\"amount\":1234567.5555,\"id\":\"A001\"}"}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.