Karmaşık bir Harita yapısını çift değer dizileri ile kodlarım. Yüksek hassasiyet önemli değil ve çıktı boyutu, bu yüzden JSON aracını (bu durumda Jackson) sağlanan bir DecimalFormat kullanarak çift değerleri serileştirmeye çalışıyorum.jackson - kontrollü hassaslıkla çiftlerin json kodlaması
aşağıdaki benim en iyi atış, ama serileştirici dizisi kodlamak için nesne haritacının alınmadıkça Bu başarısız:
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));
}
}
çıktısı:
{ "test" : [1.1111111111,1.315143204964E12}
aradığım ne:
{ "test": [1.32E12, 1.11E0]}
Herhangi bir fikir? Ayrıca
, ben sevmiyorum bir String ve yazma üretmek için ham olarak söz konusu olan - bir orada bunu yapmak DecimalFormat içine içine bir StringBuffer yem olabilir?
Teşekkür