【发布时间】:2014-04-21 20:00:59
【问题描述】:
我想用杰克逊为谷歌图表构建一个数据表,我可以轻松地创建一个 json 文件..
我使用这个杰克逊版本:
<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”:“Hans”
并且我希望我可以定义值对象的渲染方式,值对象可以是例如字符串、双精度对象或日期对象...如果它是日期对象,则日期应该像这样转换为字符串:“ v" : 日期(2010,10,01)
如果它是其他对象,例如 String 或 Double,我想决定 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;
}
【问题讨论】:
标签: java json spring serialization jackson