1. 程式人生 > >RedisTemplate中序列化方式GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的區別

RedisTemplate中序列化方式GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的區別

Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer都是序列化為json格式。

不同:

  如果儲存的型別為List等帶有泛型的物件,反序列化的時候 Jackson2JsonRedisSerializer序列化方式會報錯,而GenericJackson2JsonRedisSerializer序列化方式是成功的,

原因:

   Jackson2JsonRedisSerializer序列化方式資料:

[
    {
        "userId": null,
        "userName": "你好",
        "password": "22222222222",
        "phone": null
    }
]

   GenericJackson2JsonRedisSerializer序列化方式資料:

[
    "java.util.ArrayList",
    [
        {
            "@class": "com.winterchen.model.User",
            "userId": null,
            "userName": "你好",
            "password": "22222222222",
            "phone": null
        }
    ]
]

當反序列化的時候 Jackson2JsonRedisSerializer方式的list中放的是LinkedHashMap,而我們是強轉為User型別的所以報錯

GenericJackson2JsonRedisSerializer方式中有@class欄位儲存有型別的包路徑,可以順利的轉換為我們需要的User型別