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替換轉義字符
3、結尾
根據以上三種方法,最推薦第一種(方便快捷),當然達到想要的效果還有很多種方法,這里就不多做贅述啦有心的小伙伴可以自行去發現也可以在評論區和我交流一下,讓我也學習一下哈哈哈。就醬😚