很多人是在转换时特殊字符被替换成了unicode编程格式,而我碰到的类似,只不过是后台转换成json字符串到前端,前端解析时 '' 双引号和 / 斜杠被原样转换,冲突了json的关键字符,导致解析时提示某某位置有错误.
解决方法,总有一款适合你:
Gson gs = new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .create();
①Gson gson = new Gson(); gson.toString(obj); 会对HTML_SAFE_REPLACEMENT_CHARS数组中的字符串进行替换 ②GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = builder.create(); gson.toString(obj); 会对HTML_SAFE_REPLACEMENT_CHARS数组中的字符串进行替换 ③ GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.disableHtmlEscaping(); Gson gson = builder.create(); gson.toString(obj); 会对REPLACEMENT_CHARS数组中的字符串进行替换
优点:找到对应方法自然省去了后台繁杂低效率的对大字符串进行替换操作
Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() //不对没有用@Expose注解的属性进行操作 .enableComplexMapKeySerialization() //当Map的key为复杂对象时,需要开启该方法 .serializeNulls() //当字段值为空或null时,依然对该字段进行转换 .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //时间转化为特定格式 .setPrettyPrinting() //对结果进行格式化,增加换行 .disableHtmlEscaping() //防止特殊字符出现乱码 .registerTypeAdapter(User.class,new UserAdapter()) //为某特定对象设置固定的序列或反序列方式,自定义Adapter需实现JsonSerializer或者JsonDeserializer接口 .create();