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(键);}