2014-06-12 218 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)