gpt4 book ai didi

java - 在列表的序列化中包含具有数组索引的字段

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:55 25 4
gpt4 key购买 nike

使用 Jackson,有没有办法在序列化 json 中添加一个带有列表中元素索引的字段?

public class A {
private static List<B> bs = new LinkedArrayList<>();
}

public class B {
private String b;
}

预期结果:

{"bs": [{"index":1, "b":"b1"}, {"index":2, "b":"b2"}]}

最佳答案

您可以编写自己的自定义序列化程序,如下所示:

public static class A {
@JsonSerialize(using = BListSerializer.class)
private List<B> bs;

public A(List<B> bs) {
this.bs = bs;
}
}

public static class B {
private String b;

public B(String b) {
this.b = b;
}
}

public static class BListSerializer extends JsonSerializer<List<B>> {

@Override
public void serialize(List<B> listOfB, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartArray();
for (int i = 0; i < listOfB.size(); i++) {
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("index", i+1);
jsonGenerator.writeStringField("b", listOfB.get(i).b);
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
}
}

关于java - 在列表的序列化中包含具有数组索引的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60128343/

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