When you are working with Geometry types in Postgis, if you are using a backend with Java and others JVM compatible languages, at some point you will need to send it as GeoJSON.
I was using Play Framework, which uses FasterXML/jackson for JSON serialization, but I couldn’t find a suitable library for it. I found something but it was a bit outdated. The good news is that when it is Open Source, anything is a fork of distance 😀
I made a fork and added support to get the SRID of any Geometry. I am not sure if it support all the use cases, but the good thing about Open Source software is that anyone can do a PR to improve things.
Any new test is welcome!
https://github.com/GeosatCO/postgis-geojson
Usage
After import it, you need to register the library module within the ObjectMapper
instance you are going to use:
<span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span><span>mapper</span><span>.</span><span>registerModule</span><span>(</span><span>new</span> <span>PostGISModule</span><span>());</span><span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span> <span>mapper</span><span>.</span><span>registerModule</span><span>(</span><span>new</span> <span>PostGISModule</span><span>());</span>ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new PostGISModule());
Enter fullscreen mode Exit fullscreen mode
Then you can serialize objects:
<span>String</span> <span>json</span> <span>=</span> <span>mapper</span><span>.</span><span>writeValueAsString</span><span>(</span><span>new</span> <span>Point</span><span>(</span><span>125.6</span><span>,</span> <span>10.1</span><span>));</span><span>String</span> <span>json</span> <span>=</span> <span>mapper</span><span>.</span><span>writeValueAsString</span><span>(</span><span>new</span> <span>Point</span><span>(</span><span>125.6</span><span>,</span> <span>10.1</span><span>));</span>String json = mapper.writeValueAsString(new Point(125.6, 10.1));
Enter fullscreen mode Exit fullscreen mode
And deserialize them:
<span>Point</span> <span>point</span> <span>=</span> <span>(</span><span>Point</span><span>)</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>json</span><span>,</span> <span>Geometry</span><span>.</span><span>class</span><span>);</span><span>Point</span> <span>point</span> <span>=</span> <span>(</span><span>Point</span><span>)</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>json</span><span>,</span> <span>Geometry</span><span>.</span><span>class</span><span>);</span>Point point = (Point) mapper.readValue(json, Geometry.class);
Enter fullscreen mode Exit fullscreen mode
Peace
暂无评论内容