Я никогда не использовал Spring Boot раньше, и я хотел бы создать небольшую услугу REST с использованием mongodb. Я храню некоторые пространственные данные в базе данных и хочу сделать их доступными через интерфейс остального. Это работает и было довольно простым, но я борюсь с представлением Geojson, которое я использую по умолчанию mappig/marshalling.Как изменить сортировку geojson (GeoJsonPolygon) из mongodb в Spring Boot?
Так вот, что я до сих пор:
POJO:
@Document(collection = "geofences")
public class Geofence {
@Id
private String id;
private String topic;
private Date expiresOn;
private GeoJsonPolygon geo;
// getters and setters
}
Документ в MongoDB:
{ "_id" : ObjectId("5816b03b71e2e892bd7846f3"), "topic" : "ok", "expiresOn" : ISODate("2017-01-01T00:00:00Z"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ] } }
метод в контроллере REST:
public ResponseEntity<Collection<Geofence>> getAll() {
return new ResponseEntity<>(repository.findAll(), HttpStatus.OK);
}
По вызов службы отдыха I хотел бы получать GeoJSON часть, как это в моем документе, но я получаю вместо этого:
[
{
"id": "5816b03b71e2e892bd7846f3",
"topic": "ok",
"expiresOn": 1483228800000,
"geo": {
"points": [
{
"x": 0,
"y": 0,
"type": "Point",
"coordinates": [
0,
0
]
},
{
"x": 3,
"y": 6,
"type": "Point",
"coordinates": [
3,
6
]
},
{
"x": 6,
"y": 1,
"type": "Point",
"coordinates": [
6,
1
]
},
{
"x": 0,
"y": 0,
"type": "Point",
"coordinates": [
0,
0
]
}
],
"coordinates": [
{
"type": "LineString",
"coordinates": [
{
"x": 0,
"y": 0,
"type": "Point",
"coordinates": [
0,
0
]
},
{
"x": 3,
"y": 6,
"type": "Point",
"coordinates": [
3,
6
]
},
{
"x": 6,
"y": 1,
"type": "Point",
"coordinates": [
6,
1
]
},
{
"x": 0,
"y": 0,
"type": "Point",
"coordinates": [
0,
0
]
}
]
}
],
"type": "Polygon"
}
}
]
Любые предложения? Как я могу изменить это поведение?
Я просто столкнулся с тем же вопросом, и это кажется действительно смешным .. спасибо за сериализатор, большой для публикации «решения»! – gabowsky
Приятно слышать, я сделал это по этой точной причине :) – greyno