gpt4 book ai didi

java - Jackson 序列化没有属性

转载 作者:行者123 更新时间:2023-11-30 02:27:58 24 4
gpt4 key购买 nike

我有一个像这样的 json 结构:

{
"name": "LS",
"stocks": [
{
"x": 1500234365000,
"y": 0.000000000000
},
{
"x": 1500234427000,
"y": 0.000015154000
},
{
"x": 1500234481000,
"y": 0.000015518740
},
{
"x": 1500234548000,
"y": 0.008415518740
}
]
}

但是我需要我的 json 看起来像这样:

{
"name": "LS",
"stocks": [
[1500234365000,0.000000000000],
[1500234427000,0.000015154000],
[1500234481000,0.000015518740],
[1500234548000,0.008415518740]
]
}

我的映射类:

public class View implements Serializable {
private static final long serialVersionUID = 1636349140413063122L;

@Getter @Setter
private String name;

@JsonInclude(Include.NON_EMPTY)
@Getter @Setter
private List<Data> rates = new ArrayList<Data>();
}

和数据数组:

public class Data implements Serializable {
private static final long serialVersionUID = 2926346626990185211L;

@JsonProperty("x")
@Getter @Setter
private Long date;

@JsonProperty("y")
@Getter @Setter
private BigDecimal value;

有什么本地方法可以做到这一点吗?我搜索了 stackoverflow 和 jackson 文档,但没有找到如何删除属性名称的信息。

不知道是否可行。

无论如何,我使用 spring boot 和 Jackson

最佳答案

你可以自定义一个json序列化类

public class MyStdSerializer extends StdSerializer<Data> {

public MyStdSerializer(){
this(null);
}
public MyStdSerializer(Class<Data> t) {
super(t);
}


@Override
public void serialize(Data value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException {

jgen.writeStartArray();
jgen.writeNumber(value.getDate());
jgen.writeNumber(value.getValue());
jgen.writeEndArray();

}

}

然后:

@JsonSerialize(using=MyStdSerializer.class)
public class Data implements Serializable{

private static final long serialVersionUID = 2926346626990185211L;

@JsonProperty("x")
private Long date;

@JsonProperty("y")
private BigDecimal value;

public Long getDate() {
return date;
}

public void setDate(Long date) {
this.date = date;
}

public BigDecimal getValue() {
return value;
}

public void setValue(BigDecimal value) {
this.value = value;
}

}

关于java - Jackson 序列化没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45132821/

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