使用Gson序列化对象将属性值中“=”转为“\u003d”问题及解决

问题场景:发现json序列化之后,本来预期json ky的值为{"url":"xxx.com?param=xxx"},结果打印日志发现变成了{"url":"xxx.com?param\u003dxxx"},且代码本身并没有对“=”进行decode操作,经过排除法发现是gson序列化问题,上网搜索得知,Gson默认是进行HTML ESCAPE,也就是转码,因此对象中有=时,Gson就会把=转码;

解决方案、

1.gson设置不用HTML ESCAPE

2.使用fastjson
 

public static void main(String[] args) {

        Map kv=new HashMap<>();
        kv.put("notify","xxx.com?param=xxx");
        System.out.println(new Gson().toJson(kv));
        //解决问题
        System.out.println(JSONObject.toJSONString(kv));
        System.out.println(new GsonBuilder().disableHtmlEscaping().create().toJson(kv));
    }

使用Gson序列化对象将属性值中“=”转为“\u003d”问题及解决_第1张图片

 

你可能感兴趣的:(其他编程相关,java)