我正在使用double值数组编码复杂的Map结构.
高精度并不重要,输出大小也是如此,因此我试图使用提供的DecimalFormat来获取JSON工具(在本例中为Jackson)来序列化double值.
以下是我最好的镜头,但由于对象映射器没有选择序列化程序来编码数组,因此失败了:
class MyTest
{
public class MyDoubleSerializer extends JsonSerializer
输出是:
{“test”:[1.1111111111,1.315143204964E12}
我在找什么:
{“test”:[1.32E12,1.11E0]}
有任何想法吗?
此外,我不喜欢生成一个字符串并且写入是原始的 – 我可以将一个StringBuffer输入到DecimalFormat中来执行此操作吗?
谢谢
最佳答案
通过借用Double的内置序列化程序来管理解决这个问题.
这有点像黑客,因为writeRaw()不关心上下文并且不在数组成员之间编写逗号,所以我正在构建Json编写器并调用它的writeValue()方法来处理它.
奇怪的是,这不适用于问题中的示例(再次没有被要求序列化这些双打),但确实对我的真实世界对象起作用,这个对象更复杂.
请享用…
public class JacksonDoubleArrayTest
{
private DecimalFormat df = new DecimalFormat( "0.##E0" );
public class MyDoubleSerializer extends org.codehaus.jackson.map.ser.ScalarSerializerBase