Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 杰克逊:地图<;字符串,对象>;序列化和反序列化_Java_Json_Serialization_Jackson_Json Deserialization - Fatal编程技术网

Java 杰克逊:地图<;字符串,对象>;序列化和反序列化

Java 杰克逊:地图<;字符串,对象>;序列化和反序列化,java,json,serialization,jackson,json-deserialization,Java,Json,Serialization,Jackson,Json Deserialization,是否可以序列化/反序列化Map,其中对象的类型(映射值)将由其键确定 { "number":42, "desc":"something really important", "location":{ "x":9999, "y":9999, "wkid":9999 }, "shape":{ "type":"polyline", "data":"dGhpcyBnZW9tZXRyeS

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

{
    "number":42,
    "desc":"something really important",
    "location":{
        "x":9999,
        "y":9999,
        "wkid":9999
    },
    "shape":{
        "type":"polyline",
        "data":"dGhpcyBnZW9tZXRyeSBpcyBmYWtlIDpQ"
    }
}
在这种特殊情况下,我知道
desc
始终是
string
location
shape
——第三方类(我有序列化器和反序列化器),其他值是装箱原语


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

是的,这是可能的。我建议你试试。只需粘贴您的
JSON
,然后选择源类型
JSON

是的,可以完成。 另一个结构包含一对
Map
,并将第一个结构(
Map
)的键名链接到第二个结构

比如说

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

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

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

deser.put("desc", StringDeserializer.class);
Map Map=newhashmap()`
map.put(“desc”,“真正重要的东西”);
Map desr=new HashMap();
put(“desc”,StringDeserializer.class);

您还可以使用
desr
,其中的值将是类名,然后您只需按名称加载一个类即可

您是否可以更具体一点(应该如何将
desr
映射连接到ObjectReader/Mapper)?如果您不使用Jackson注册表,那么您是手动执行的。如果您手动执行此操作,那么它将类似于:反序列化器des=getdesr(key);/*键的一个例子是“desc”*/;公共对象getDeser(字符串键){返回deser.get(键);}