fix json double

This commit is contained in:
Looly
2020-10-11 13:45:33 +08:00
parent 6ea9912fd4
commit c4fdf545e7
5 changed files with 95 additions and 78 deletions

View File

@@ -10,10 +10,8 @@ import cn.hutool.json.test.bean.UserC;
import org.junit.Assert;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JSONUtilTest {
@@ -126,15 +124,6 @@ public class JSONUtilTest {
// Assert.assertEquals("{\"age\":18,\"gender\":\"男\"}", user.getProp());
}
@Test
public void toBeanTest3() {
// 测试数字类型精度丢失的情况
String number = "1234.123456789123456";
String jsonString = "{\"create\":{\"details\":[{\"price\":" + number + "}]}}";
WebCreate create = JSONUtil.toBean(jsonString, WebCreate.class);
Assert.assertEquals(number,create.getCreate().getDetails().get(0).getPrice().toString());
}
@Test
public void putByPathTest() {
JSONObject json = new JSONObject();
@@ -172,62 +161,5 @@ public class JSONUtilTest {
final JSONObject jsonObject = JSONUtil.parseObj(json);
Assert.assertEquals("12.00", jsonObject.getBigDecimal("test").setScale(2).toString());
}
class WebCreate {
private Create create;
@Override
public String toString() {
return "WebCreate{" +
"create=" + create +
'}';
}
public void setCreate(Create create) {
this.create = create;
}
public Create getCreate() {
return create;
}
}
class Create {
@Override
public String toString() {
return "Create{" +
"details=" + details +
'}';
}
private List<Detail> details;
public void setDetails(List<Detail> details) {
this.details = details;
}
public List<Detail> getDetails() {
return details;
}
}
class Detail {
private BigDecimal price;
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public String toString() {
return "Detail{" +
"price=" + price +
'}';
}
public BigDecimal getPrice() {
return price;
}
}
}

View File

@@ -0,0 +1,75 @@
package cn.hutool.json;
import org.junit.Assert;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.List;
public class Pr192Test {
@Test
public void toBeanTest3() {
// 测试数字类型精度丢失的情况
String number = "1234.123456789123456";
String jsonString = "{\"create\":{\"details\":[{\"price\":" + number + "}]}}";
WebCreate create = JSONUtil.toBean(jsonString, WebCreate.class);
Assert.assertEquals(number,create.getCreate().getDetails().get(0).getPrice().toString());
}
static class WebCreate {
private Create create;
@Override
public String toString() {
return "WebCreate{" +
"create=" + create +
'}';
}
public void setCreate(Create create) {
this.create = create;
}
public Create getCreate() {
return create;
}
}
static class Create {
@Override
public String toString() {
return "Create{" +
"details=" + details +
'}';
}
private List<Detail> details;
public void setDetails(List<Detail> details) {
this.details = details;
}
public List<Detail> getDetails() {
return details;
}
}
static class Detail {
private BigDecimal price;
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public String toString() {
return "Detail{" +
"price=" + price +
'}';
}
public BigDecimal getPrice() {
return price;
}
}
}