Tôi mã hóa cấu trúc Bản đồ phức tạp với các mảng giá trị kép. Độ chính xác cao là không quan trọng và kích thước đầu ra là, vì vậy tôi đang cố gắng để có được công cụ JSON (Jackson trong trường hợp này) để tuần tự hóa các giá trị kép bằng cách sử dụng một DecimalFormat được cung cấp.jackson - mã hóa json của đôi với độ chính xác được kiểm soát
Sau đây là bức ảnh đẹp nhất của tôi, nhưng điều này không như serializer không chọn bởi các đối tượng mapper để mã hóa các mảng:
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));
}
}
Đầu ra là:
{ "test" : [1.1111111111,1.315143204964E12}
gì tôi đang tìm kiếm:
{"test": [1.32E12, 1.11E0]}
Mọi ý tưởng?
Ngoài ra, tôi không muốn phải tạo ra một chuỗi và ghi là thô - là có tôi có thể nuôi một StringBuffer vào DecimalFormat để làm điều này?
Cảm ơn