Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化映射<;字符串,对象>;往返_Java_Json_Serialization_Jackson - Fatal编程技术网

Java 序列化映射<;字符串,对象>;往返

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

我想用Jackson将
映射
序列化为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>();