将Map <string,object>序列化为Json并返回</string,object>

时间:2014-12-11 07:43:01

标签: java json serialization jackson

我想与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;
     }
}

1 个答案:

答案 0 :(得分:0)

尝试按照以下方式执行地图;

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

(如果使用Java 7,可以使用菱形运算符而不指定类似new HashMap&lt;&gt;())的类型。

您还可以尝试使用jackson-annotations

使用@JsonDeserialize