Моя проблема заключается в ошибке сериализации списка. Список содержит объекты Geo Json, причиной которых является ошибка: com.faster xml .jackson.core.JsonGenerationException: не удается запустить объект, ожидая имени поля. Вот код, в котором у меня есть реализация:
public class GeoJsonSerializerList extends JsonSerializer<List<GeoJson>> {
@Override
public void serialize(List<GeoJson> valueList, JsonGenerator gen, SerializerProvider serializers) throws IOException {
for(GeoJson value : valueList){
switch (value.getType()) {
case "Point":
gen.writeStartObject();
gen.writeStringField("type", value.getType());
gen.writeObjectField("coordinates", value.getCoordinates());
gen.writeEndObject();
break;
case "LineString":
gen.writeStartObject();
gen.writeStringField("type", value.getType());
gen.writeArrayFieldStart("coordinates");
GeoJsonLineString geoJsonLineString = (GeoJsonLineString) value;
for (Point p : geoJsonLineString.getCoordinates()) {
gen.writeObject(new double[]{p.getX(), p.getY()});
}
gen.writeEndArray();
gen.writeEndObject();
break;
case "MultiPoint":
gen.writeStartObject();
gen.writeStringField("type", value.getType());
gen.writeArrayFieldStart("coordinates");
GeoJsonMultiPoint geoJsonMultiPoint = (GeoJsonMultiPoint) value;
for (Point p : geoJsonMultiPoint.getCoordinates()) {
gen.writeObject(new double[]{p.getX(), p.getY()});
}
gen.writeEndArray();
gen.writeEndObject();
break;
case "Polygon":
gen.writeStartObject();
gen.writeStringField("type", value.getType());
gen.writeArrayFieldStart("coordinates");
GeoJsonPolygon geoJsonPolygon = (GeoJsonPolygon) value;
gen.writeStartArray(geoJsonPolygon.getCoordinates().size());
for (GeoJsonLineString elem : geoJsonPolygon.getCoordinates()) {
for (Point p : elem.getCoordinates()) {
gen.writeObject(new double[]{p.getX(), p.getY()});
}
}
gen.writeEndArray();
gen.writeEndArray();
gen.writeEndObject();
break;
case "MultiPolygon":
gen.writeStartObject();
gen.writeStringField("type", "MultiPolygon");
gen.writeArrayFieldStart("coordinates");
GeoJsonMultiPolygon geoJsonMultiPolygon = (GeoJsonMultiPolygon) value;
for (int i = 0; i != geoJsonMultiPolygon.getCoordinates().size(); ++i) {
gen.writeStartArray();
GeoJsonPolygon geoJsonPolygon1 = geoJsonMultiPolygon.getCoordinates().get(i);
gen.writeStartArray(geoJsonPolygon1.getCoordinates().size());
for (GeoJsonLineString elem : geoJsonPolygon1.getCoordinates()) {
for (Point p : elem.getCoordinates()) {
gen.writeObject(new double[]{p.getX(), p.getY()});
}
}
gen.writeEndArray();
gen.writeEndArray();
}
gen.writeEndArray();
gen.writeEndObject();
break;
}
}
}
@JsonSerialize(using = GeoJsonSerializerList.class)
@JsonDeserialize(using = GeoJsonDeserializerList.class)
private List<GeoJsonLineString> segments;
Я правильно выполнил сериализацию для одного объекта Geo Json, но я получаю ошибку при сериализации списка. Я что-то упустил в этом коде? Любое предложение было бы очень полезным. Спасибо