java fastjson 序列化、反序列化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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字段

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

Java中使用FastJSON进行对象的序列化和反序列化

15-java安全——fastjson反序列化1.2.25 - 1.2.41版本绕过

fastjson(1.2.58)支持多态结构的序列化、反序列化

Fastjson反序列化

Fastjson 序列化与反序列化

15-java安全——fastjson反序列化的历史版本绕过(开启AutoType功能)