A simple GeoJSON serializer for Jackson

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

原文链接:A simple GeoJSON serializer for Jackson

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
More grow up more lonely, more grow up more uneasy.
越长大越孤单 ,越长大越不安
评论 抢沙发

请登录后发表评论

    暂无评论内容