2
我想建立谷歌圖表與傑克遜,我可以很容易地創建一個JSON文件的DataTable ..我如何創建一個自定義傑克遜映射器?
我用這個版本傑克遜:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
我有以下的類(本示例創建僅排此刻):
public class DataTable implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("rows")
private List<DataTableRow> dataTableRows;
public List<DataTableRow> getDataTableRows() {
return dataTableRows;
}
public void setDataTableRows(List<DataTableRow> dataTableRows) {
this.dataTableRows = dataTableRows;
}
}
然後我有一個DataTableRow類
public class DataTableRow implements Serializable{
private static final long serialVersionUID = 1L;
@JsonProperty("c")
List<SingleTableCell> singleTableCell;
public List<SingleTableCell> getSingleTableCell() {
return singleTableCell;
}
public void setSingleTableCell(List<SingleTableCell> singleTableCell) {
this.singleTableCell = singleTableCell;
}
}
個
和行有幾個SingleTableCells
public class SingleTableCell implements Serializable{
private static final long serialVersionUID = 1L;
@JsonProperty("v")
private Value value;
@JsonProperty("f")
private String formattedValue = null;
public Value getValue() {
return value;
}
public void setValue(Value value) {
this.value = value;
}
public String getFormattedValue() {
return formattedValue;
}
public void setFormattedValue(String formattedValue) {
this.formattedValue = formattedValue;
}
}
這會產生我一個JSON字符串是這樣的:
{
"rows": [
{
"c": [
{
"v": {
"value": "Hans"
},
"f": null
},
{
"v": {
"value": 3.4
},
"f": null
}
]
}
]
}
問題是我的價值目標,這是一個抽象類我不希望這個類呈現爲一個JSON對象,我只想要一個鍵值對!因此它不應該渲染到這一點:
「V」:{ 「值」: 「漢斯」 }
我想只有這個: 「V」: 「漢斯」
,我想我可以定義值對象是如何rendert值對象卡恩是例如字符串,雙人或Date對象......如果是日期應該轉換爲這樣的字符串Date對象:「v」:日期(2010年,10,01)
,如果它像一個字符串或雙人牀我想決定JSON字符串怎麼看起來像其他物體..
我的抽象類是這樣的:
public abstract class Value {
}
public class StringValue extends Value{
String Value;
}
public class DoubleValue extends Value{
Double Value;
}
public class DateValue extends Value{
Date Value;
}