1、前提
在项目中遇到一个情况,需要将一个对象序列化成JSON String存进Mysql中的某一个字段。首先就是需要用到JSON转化的工具类,这里我用的是fastjson,当然也可以用其他工具类(ps:google的Gson)。第二步就是将对象进行序列化了JSON.toJSONString(对象)。到目前为止都非常正常,查看在数据库中的内容也是正常的JSON格式,但是在我将结果返回给前端时却发现整个JSON被加上了转义,导致前端无法直接通过对象获取内容。
2、解决
当然这里也有很多解决方法
-
利用fastjson中@JsonRawValue(推荐)
在需要解析的字段上加上@JsonRawValue即可解析出无转义符号的JSON
public class Test{
@ApiModelProperty("JSON拓展信息返回")
@JsonRawValue
private String expand;
// 省略...
}
- 后端去除转义字符
import org.apache.commons.lang.StringEscapeUtils;
String s1="{\"userId\":1,\"username\":"张三",\"age\":18}";
String s2 = StringEscapeUtils.unescapeJava(s1);
// 结果 {"userId":1,"username":"张三","age":18}
- 前端利用replacet替换转义字符