..Liste içeriği Jackson ile düz bir JSON nesnesine nasıl serileştirilir?
public class City {
private String title;
private List<Person> people;
}
...
public class Person {
private String name;
private int age;
}
aşağıdaki örneğe JSON sınıflarının Jackson serialize örneklerini izin istiyorum:
{
"title" : "New York",
"personName_1" : "Jane Doe",
"personAge_1" : 42,
"personName_2" : "John Doe",
"personAge_2" : 23
}
JSON formatı, değiştiremediğim harici bir API tarafından tanımlanmıştır. Ancak
public class PeopleSerializer extends JsonSerializer<List<Person>> {
private static final int START_INDEX = 1;
@Override
public void serialize(List<Person> people,
JsonGenerator generator,
SerializerProvider provider) throws IOException {
for (int i = 0; i < people.size(); ++i) {
Person person = people.get(i);
int index = i + START_INDEX;
serialize(person, index, generator);
}
}
private void serialize(Person person, int index, JsonGenerator generator) throws IOException {
generator.writeStringField(getIndexedFieldName("personName", index),
person.getName());
generator.writeNumberField(getIndexedFieldName("personAge", index),
person.getAge());
}
private String getIndexedFieldName(String fieldName, int index) {
return fieldName + "_" + index;
}
}
bu: Denedim temel uygulamasıdır burada
@JsonSerialize(using = PeopleSerializer.class)
private List<Person> people;
... ve:
Zaten ben özel bir seri hale gibi olan liste alanını açıklama olduğunu bulduk bir başarısız:
JsonGenerationException: Can not write a field name, expecting a value
Ben de Jackson'ın Converter arayüzünü ama tha kullanarak içine baktım İç içe geçmiş liste nesnelerini açmak için uygun değildir.
Ben de @JsonUnwrapped
farkındayım ama listelerle kullanılmak üzere tasarlanmamıştır.
ilgili mesaj
- Serialize List content in a flat structure in jackson json (Java)
- Jackson: How to add custom property to the JSON without modifying the POJO
- How to serialize only the ID of a child with Jackson
bu çünkü "people" alan adı, daha sonra, "JsonSerializer" öğesinin değerini yazmasını bekler. O güvenilir ve @JsonSerialize (kullanarak = CitySerializer.class) '' 'ile City' sınıfı açıklamalı @ug_ –
. Özel seri hale getirici içinde, sadece yukarıdaki "PeopleSerializer" da yaptığım gibi "insanlar" alanını serileştirdim. Serileştirme aynı hata mesajıyla başarısız oluyor. – JJD
@JJD - Şüphesiz daha basit bir yaklaşım var, çözmeye çalıştığınız kök problem nedir? Ben – AjahnCharles