Массив ошибок сериализации объекта Geo Json. JsonGenerationException Не удается запустить объект, ожидая имени поля - PullRequest
0 голосов
/ 10 июля 2020

Моя проблема заключается в ошибке сериализации списка. Список содержит объекты 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, но я получаю ошибку при сериализации списка. Я что-то упустил в этом коде? Любое предложение было бы очень полезным. Спасибо

...