2014-06-12 144 views
1

我使用杰克逊2.4,我需要生成的数据由d3.js处理。杰克逊杰森序列化

d3.js希望我的JSON值是这样的格式:

values : [[0, 13.5],[1, 2.5],[2, 5],[3, 41.2]] 

在我的Java模型我有:

public class Series { 

    private String key; 
    private List<Entry> values; 

    ... 

    public void addEntry(int x, double y) { 
     values.add(new Entry(x, y)); 
    } 

    public class Entry { 
     private int x; 
     private double y; 

     ...   
    } 
} 

这只是序列化,而不是反序列化,所以是杰克逊注释有一种方法让json根据我的需要生成,因为现在它生成了:

values : [{x: 0, y: 13.5},{x: 1, y: 2.5},{x: 2, y: 2, 5},{x: 3, y: 41.2}] 

谢谢,

回答

3

最简单的方法是使用@JsonValue。尝试添加这对您的Entry类:

@JsonValue 
public Object[] jsonArray() { 
    return new Object[]{Integer.valueOf(x), Double.valueOf(y)}; 
} 

(你也可以返回一个double[],因为这仅仅是将被转换到JavaScript数字,或使用自动装箱,但是这是一个有点清晰IMO)