使用 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/