Java 如何创建自定义Jackson映射器?
我想用jackson为谷歌图表构建一个数据表,这样我就可以轻松创建一个json文件 我使用这个杰克逊版本:Java 如何创建自定义Jackson映射器?,java,json,spring,serialization,jackson,Java,Json,Spring,Serialization,Jackson,我想用jackson为谷歌图表构建一个数据表,这样我就可以轻松创建一个json文件 我使用这个杰克逊版本: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
这会生成一个Json字符串,如下所示:
{
}
问题是我的值对象这是一个抽象类我不想要这个类呈现为json对象我只想要一个键值对!因此,它不应导致:
“五”:{
“价值”:“汉斯”
}
我只想要这个:“v”:“Hans”
我想我可以定义值对象是如何呈现的值对象不能是例如字符串、双精度或日期对象。。。如果是日期对象,则日期应转换为如下字符串:“v”:日期(2010,10,01)
如果是字符串或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;
}
为了实现您的目标,我将对您的代码进行以下更改:
public abstract class Value {
}
public class StringValue extends Value{
@JsonValue
//do whatever else you need although I can't really see what that would be
String Value;
}
public class DoubleValue extends Value{
@JsonValue
//do whatever else you need although I can't really see what that would be
Double Value;
}
public class DateValue extends Value{
@JsonValue
@DateFormat() //insert the relevant date code here
Date Value;
}
从你发布的代码中,我看不出classValue
的真正用途,但我在这里运行,因为我猜你对它做的比你发布的更多
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;
}
}
"rows": [
{
"c": [
{
"v": {
"value": "Hans"
},
"f": null
},
{
"v": {
"value": 3.4
},
"f": null
}
]
}
]
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;
}
public abstract class Value {
}
public class StringValue extends Value{
@JsonValue
//do whatever else you need although I can't really see what that would be
String Value;
}
public class DoubleValue extends Value{
@JsonValue
//do whatever else you need although I can't really see what that would be
Double Value;
}
public class DateValue extends Value{
@JsonValue
@DateFormat() //insert the relevant date code here
Date Value;
}