解决fastjson反序列化时报错的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决fastjson反序列化时报错的问题相关的知识,希望对你有一定的参考价值。

参考技术A 现在JAVA 对象如下:

该对象需要存进redis里面,序列化进去,没发现问题,但反序列化时,报如下错

经查,原来是fastjson不支持泛型,修改原有的对象即可:

去掉泛形后序列化一起正常。

java fastjson 序列化、反序列化

有如下已经序列化的字符串: "description":"hehe","mods_description":["modinfo_name":"More DST Characters","modinfo_name":"Soulmates","modinfo_name":"DST Where\'s My Beefalo?"],"pvp":false
我需要将它反序列化,修改里面的一项值,然后再序列化回来。我使用fastjson将它转成UserInfo时会报错。

class UserInfo implements Serializable
public String description;
public HashMap<String, ArrayList<HashMap<String, String>>> mods_description;
public boolean pvp;

如果我将mods_description申明为String的话,能正常的反序列化。但是在将得到的UserInfo序列化时,mods_description里会出现很多转义符,变成:"description":"hehe","mods_description":"[\"modinfo_name\":\"More DST
Characters\",\"modinfo_name\":\"Soulmates\",\"modinfo_name\":\"DST
Where's My Beefalo?\"]","pvp":false。
请问:如果mods_description申明为String的话,如何使序列化时不产生转义符,而是和原始串一样?或者将mods_description申明为何种类型能完全将子串反序列化?

不行就分步反序列化

1.得到各个JSON Object的反序列化,包括mods_description要定义为String.
2.讲mods_description这个JSON Array再反序列化。注意这个是json array,要用List.
参考技术A mods_description 已 “[” 开头明显是个list,声明成list , 然后里面放一个map或一个类,类里添加modinfo_name字段

以上是关于解决fastjson反序列化时报错的问题的主要内容,如果未能解决你的问题,请参考以下文章

解决FastJSON反序列化顺序问题

fastJson反序列化参数为null的问题

解决使用Redis时配置 fastjson反序列化报错 com.alibaba.fastjson.JSONException: autoType is not support

JSON 反序列化 Long 变 Integer 或 Double 问题

java fastjson 序列化、反序列化

Fastjson 反序列化 Jndi 注入利用 JdbcRowSetImpl 链