@Override
public void serializeWithType(Geoshape geoshape, JsonGenerator jgen, SerializerProvider serializerProvider,
TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
jgen.writeStartObject();
if (typeSerializer != null) jgen.writeStringField(GraphSONTokens.CLASS, Geoshape.class.getName());
String geojson = toGeoJson(geoshape);
Map json = mapReader.readValue(geojson);
if (geoshape.getType() == Type.POINT) {
final double[] coords = ((List<Number>) json.get(FIELD_COORDINATES)).stream().map(Number::doubleValue).mapToDouble(i -> i).toArray();
GraphSONUtil.writeWithType(FIELD_COORDINATES, coords, jgen, serializerProvider, typeSerializer);
} else {
GraphSONUtil.writeWithType(FIELD_LABEL, json, jgen, serializerProvider, typeSerializer);
}
jgen.writeEndObject();
}