Java 序列化映射<;字符串,对象>;往返
我想用Jackson将Java 序列化映射<;字符串,对象>;往返,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我想用Jackson将映射序列化为JSON并返回。对象类型可以是多个bean。但当序列化回来时,我认为Jackson不知道对象的类型。因此,is将其序列化为LinkedHashMap。是否可以添加对象的类型信息 以下是我的示例程序: TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String,Object>>() {}; Obje
映射
序列化为JSON并返回。对象类型可以是多个bean。但当序列化回来时,我认为Jackson不知道对象的类型。因此,is将其序列化为LinkedHashMa
p。是否可以添加对象的类型信息
以下是我的示例程序:
TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String,Object>>() {};
ObjectMapper m = new ObjectMapper();
JsonFactory jf = new JsonFactory();
Map<String, Object> map = new HashMap<String, Object>();
UserBean bean1 = new UserBean();
bean1.setId("1");
bean1.setName("test");
map.put("user", bean1);
String test = m.writeValueAsString(map);
map = m.readValue(test, typeRef);
for (final Map.Entry<String, Object> entry : map.entrySet())
{
final String key = entry.getKey();
if (key.matches("user"))
{
final UserBean userBean = (UserBean)map.get(key);
}
}
试着做下面的地图
Map<String, UserBean> map = new HashMap<String, UserBean>();
Map Map=newhashmap();
(如果使用Java 7,则可以使用diamond运算符,而无需指定诸如new HashMap()之类的类型)
您也可以尝试使用
@JsonDeserialize
使用谢谢您的回答,但是对象也可以是与UserBean不同的另一种类型(例如AppBean)。然后Jackson不知道该对象的类型。因此,如果密钥是“App”,那么我想将其转换为AppBean。
Map<String, UserBean> map = new HashMap<String, UserBean>();