У вас есть две опции:
- Преобразование объекта в список
Map
-s в правильной структуре. - Запись собственного сериализатора.
Пользовательский сериализатор должен быть простым в этом случае:
class PojoSerializer extends JsonSerializer<Pojo> {
@Override
public void serialize(Pojo value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeStartObject();
gen.writeObjectField(value.getName(), value.getClasses());
gen.writeEndObject();
}
}
И простым использованием:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class JsonApp {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.writeValue(System.out, Arrays.asList(new Pojo(), new Pojo()));
}
}
@JsonSerialize(using = PojoSerializer.class)
class Pojo {
private String name = "a";
private List<String> classes = Arrays.asList("1", "2", "3");
// getters, setters
}
Отпечатки:
[ {
"a" : [ "1", "2", "3" ]
}, {
"a" : [ "1", "2", "3" ]
} ]