我正在使用double值数组编码复杂的Map结构.高精度并不重要,输出大小也是如此,因此我试图使用提供的DecimalFormat来获取JSON工具(在本例中为Jackson)来序列化double值.
以下是我最好的镜头,但由于对象映射器没有选择序列化程序来编码数组,因此失败了:
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()) }; …Run Code Online (Sandbox Code Playgroud)