gpt4 book ai didi

java - 我如何创建自定义 Jackson Mapper?

转载 作者:行者123 更新时间:2023-11-30 11:19:30 26 4
gpt4 key购买 nike

我想用 jackson 为 google charts 构建一个数据表,我可以轻松地创建一个 json 文件..

我使用这个 jackson 版本:

<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
}
]
}
]

问题是我的 Value 对象这是一个抽象类我不想要这个类呈现为 json 对象我只想要一个键值对!所以它不应该呈现为:

“v”:{ “值(value)”:“汉斯”

我只想要这个:“v”:“汉斯”

并且我希望我可以定义值对象的呈现方式,值对象不能是例如字符串、 double 对象或日期对象...如果它是日期对象,则日期应转换为字符串,如下所示:“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;
}

最佳答案

我将对您的代码进行以下更改以实现您想要的:

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;

}

从您发布的代码中,我无法真正看出 Value 类的目的是什么,但我在这里运行是因为我猜您用它做的比您发布的要多

关于java - 我如何创建自定义 Jackson Mapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com