解决MySQL字段存JSON,返回前端解析加上转义字符问题

  • Post author:
  • Post category:mysql


1、前提

在项目中遇到一个情况,需要将一个对象序列化成JSON String存进Mysql中的某一个字段。首先就是需要用到JSON转化的工具类,这里我用的是fastjson,当然也可以用其他工具类(ps:google的Gson)。第二步就是将对象进行序列化了JSON.toJSONString(对象)。到目前为止都非常正常,查看在数据库中的内容也是正常的JSON格式,但是在我将结果返回给前端时却发现整个JSON被加上了转义,导致前端无法直接通过对象获取内容。

2、解决

当然这里也有很多解决方法

  1. 利用fastjson中@JsonRawValue(推荐)

    在需要解析的字段上加上@JsonRawValue即可解析出无转义符号的JSON
public class Test{

    @ApiModelProperty("JSON拓展信息返回")
    @JsonRawValue
    private String expand;

   // 省略...
}
  1. 后端去除转义字符
import org.apache.commons.lang.StringEscapeUtils;

String s1="{\"userId\":1,\"username\":"张三",\"age\":18}";
 
String s2 = StringEscapeUtils.unescapeJava(s1);
// 结果 {"userId":1,"username":"张三","age":18}
  1. 前端利用replacet替换转义字符