使用JSON对象中的类型将JSON反序列化为POJO

时间:2018-03-03 18:49:23

标签: json jackson pojo json-deserialization

我正在尝试使用带有多态类型的jackson将JSON解析为POJO。

我有以下JSON,我想将其反序列化为POJO。 我已经创建了包装类来解析所有JSON值,但是我遇到了“geometry”和“geometryType”对象的问题。

我为每种类型的几何创建了POJO,我想使用“geometryType”中的值将“几何”中的值解析为不同的Java类,具体取决于“geometryType”的值。例如:如果geometryType ='geometryPolygon',那么我想将“几何”解析为Polygon类。

我知道它可以使用注释@JsonTypeInfo并使用属性为我的POJO选择正确的子类型,但在我的情况下,“type”实际上是在一个不同的对象中,而不是在所有的同一个JSON对象中我在网上看到的其他教程。

任何帮助将不胜感激。

{
"results": [{
        "layerId": 3,
        "layerName": "Parcels",
        "displayFieldName": "LAND_CO",
        "value": "0",
        "attributes": {
            "Feature identifier": "6",
            "SHAPE": "Polygon",
            "PROPERTY_I": "5006",
            "LANDUSE_CO": "0",
            "ZONING": "1",
            "PARCEL_ID": "6363",
            "Res": "Non-Residential",
            "Zoning_simple": "Null",
            "SHAPE_Length": "3594.570779",
            "SHAPE_Area": "112648.196175"
        },
        "geometryType": "geometryPolygon",
        "geometry": {
            "rings": [[[-85.802587291351813, 32.394007668298649], .........]]
        }
    }
]
}

POJO类的示例:

class Polygon extends Geometry { ... }
class Polyline extends Geometry {...}

1 个答案:

答案 0 :(得分:0)

您可以使用这个神奇的工具将您的JSON转换为POJO。 http://www.jsonschema2pojo.org/