0

谁能建议一个库或方法将 JSON 字符串反序列化为具有几何(例如 JTS)和属性列表的 Java 对象?

我有几个数据源,我希望能够在地图上查询并显示它们及其属性数据。我见过的方法涉及为每种数据类型创建一个特定的 Java 对象(例如 AutoBean 与 getName()、getDescription() 等)。我所追求的是能够拥有 1 个对象,而不管属性是什么(因为我不提前知道它们,而且会有很多)

我想能够说一些类似的东西:

MyObject o = new MyObject();
o.setGeometry(SomeJsonLibrary.readGeometry(json)); //read Geometry
o.setAttributes(someJsonLibrary.readAttributes(json)); //read all other attributes

欢迎任何建议/替代方案。

4

2 回答 2

2

看起来您确实将 json 转换为地图。

顺便说一句,这行可以省略,您可以遍历您的地图而不将其放在列表中。

List<Map<String, Object>> features = (List<Map<String, Object>>) mapped.get("features");

我的首选是 Gson(只是我熟悉 Gson)。示例代码:

Gson gson=new Gson(); 
String json = "your-json";
Map<String,Object> map=new HashMap<String,Object>();
map=(Map<String,Object>) gson.fromJson(json, map.getClass());
于 2013-11-08T03:26:52.607 回答
0

一种可能性(使用 com.fasterxml.jackson.databind.ObjectMapper):

        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> mapped = mapper.readValue(json, Map.class);
        List<Map<String, Object>> features = (List<Map<String, Object>>) mapped.get("features");
        for (Map<String, Object> feature : features) {
            Map<String, Object> attributes = (Map<String, Object>) feature.get("attributes");//for ArcGIS
            Map<String, Object> properties = (Map<String, Object>) feature.get("properties");//for OGC
            Map<String, Object> geometry = (Map<String, Object>) feature.get("geometry");//TODO deserialize geometry
            //do stuff
        }

如果有人有更好的解决方案/建议,请告诉我。

于 2013-11-08T01:12:08.070 回答