杰克逊:Map <string,object =“”>序列化和反序列化</string,>

时间:2014-04-07 15:21:26

标签: java json serialization jackson json-deserialization

是否可以序列化/反序列化Map<String, Object>,其中对象类型(映射值)将由其键确定。

{
    "number":42,
    "desc":"something really important",
    "location":{
        "x":9999,
        "y":9999,
        "wkid":9999
    },
    "shape":{
        "type":"polyline",
        "data":"dGhpcyBnZW9tZXRyeSBpcyBmYWtlIDpQ"
    }
}

在这种特殊情况下,我知道desc始终是stringlocationshape - 第三方类(我有序列化程序和反序列化程序)和其他值是盒装基元。

杰克逊可以做这样的事吗?可以通过使用MapSerializer / MapDeserializer完成这样的事情吗? (我找不到任何例子)

2 个答案:

答案 0 :(得分:0)

是的,这是可能的。我建议你试试jsonschema2pojo。只需粘贴JSON并选择来源类型JSON

答案 1 :(得分:0)

是的,可以做到。 拥有包含一对Map<String, Class>的另一个结构,并将第一个结构(Map<String, Object>)的键名链接到第二个结构。

例如

Map map = new HashMap<String, Object>();`

map.put("desc", "something really important");

Map deser = new HashMap<String, Class>();

deser.put("desc", StringDeserializer.class);

您还可以使用deser<String, String>,其中值为类名,然后您只需按名称加载类http://www.tutorialspoint.com/java/lang/class_forname_loader.htm