5
我正在編碼一個具有double值數組的複雜Map結構。 高精度並不重要,輸出大小是,所以我試圖讓JSON工具(在這種情況下傑克遜)使用提供的DecimalFormat序列化雙精度值。jackson -json編碼精度控制的雙打
以下是我最好的拍攝,但作爲串行不是由對象映射器拾取到陣列編碼這個失敗:
class MyTest
{
public class MyDoubleSerializer extends JsonSerializer<double[]>
{
public void serialize(double[] value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException
{
for (double d : value)
{
jgen.writeStartArray();
jgen.writeRaw(df.format(d));
jgen.writeEndArray();
}
}
}
@Test
public void test1() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("MyModule", new Version(0, 1, 0, "alpha"));
module.addSerializer(double[].class, new MyDoubleSerializer());
mapper.registerModule(module);
Map<String, Object> data = new HashMap<String, Object>();
double[] doubleList = { 1.1111111111D, (double) (System.currentTimeMillis()) };
data.put("test", doubleList);
System.out.print(mapper.writeValueAsString(data));
}
}
的輸出是:
{「測試」 :[1.1111111111,1.315143204964E12}
我一直在尋找:
{ 「測試」:[1.32E12,1.11E0]}
任何想法?
此外,我不喜歡必須生成一個字符串和寫入是原始的 - 是否有我可以將一個StringBuffer進入DecimalFormat進行此操作?
謝謝