我想与Jackson一起将Map<String,Object>
序列化为JSON并返回。对象类型可以是几个bean。但在序列化时我认为杰克逊不知道对象有什么类型。因此将其序列化为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);
}
}
public class UserBean {
String id;
String name;
public UserBean()
{
super();
}
public void setId(String id){
this.id = id;
}
public String getId(){
return this.id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
答案 0 :(得分:0)
尝试按照以下方式执行地图;
Map<String, UserBean> map = new HashMap<String, UserBean>();
(如果使用Java 7,可以使用菱形运算符而不指定类似new HashMap&lt;&gt;())的类型。
您还可以尝试使用jackson-annotations
使用@JsonDeserialize