我正在編寫一個自定義序列化器,以將double值轉換爲JSON對象中的字符串。到目前爲止我的代碼:基本類型的Jackson序列化器
public String toJson(Object obj) throws IOException {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("DoubleSerializer", new Version(1, 0, 0, ""));
module.addSerializer(Double.class, new DoubleSerializer());
mapper.registerModule(module);
return mapper.writeValueAsString(obj);
}
public class DoubleSerializer extends JsonSerializer<Double> {
@Override
public void serialize(Double value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
String realString = new BigDecimal(value).toPlainString();
jgen.writeString(realString);
}
}
這工作完全正常雙(類成員),但雙(基本型)的成員不起作用。例如,
public void test() throws IOException {
JsonMaker pr = new JsonMaker();
TestClass cl = new TestClass();
System.out.println(pr.toJson(cl));
}
class TestClass {
public Double x;
public double y;
public TestClass() {
x = y = 1111142143543543534645145325d;
}
}
返回:{ 「X」: 「1111142143543543565865975808」, 「Y」:1.1111421435435436E27}
有沒有一種方法,使其遵循相同的行爲,對於兩種情況?
哇!不能相信我在這上面失去了一個小時:)謝謝! – mihsathe 2014-09-20 04:06:24