簡體   English   中英

序列化地圖 <String,Object> 到傑​​森再回來

[英]Serialize Map<String,Object> to Json and back

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

嘗試如下圖所示;

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

(如果使用Java 7,則可以使用菱形運算符,而無需指定新的HashMap <>()之類的類型)。

您也可以嘗試通過jackson-annotations使用@JsonDeserialize

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM