对象转json字符串(带转义字符)
前言
解决端上变量类型特殊需求 为了防止出现这种变态需求,明明是json对象,却用字符串接收的情况,以此作为记录
错误示例
1、直接调用原生的toString()方法
说明:这是java形式的json字符串,无论是net的toString()还是ali的toString()、toJSONString()方法,里面存的还是对象,并不是我们想要的结果
2、使用FackJson
说明:生成的是JavaScript的json字符串
解决方案
通过谷歌的Gson来实现 所需要的jar包
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency>
实现
/* * json对象转格式化后的json字符串 * @attention: 入参格式不同,返回结果不同 * @param: json * 如果参数是json对象,返回的将是:格式化后的json字符串(小于号>会被转码成u003c,大于号>会被转码成u003e,且替换无效); * 如果参数是json字符串,返回的将是:带转义符且两边带双引号的json字符串; * 当参数是json字符串时,实现的效果与toJsonString()方法一样 * @return: java.lang.String */ public static String formatJson(Object json) { // 非空校验 if (null == json) return ""; GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setPrettyPrinting(); Gson gson = gsonBuilder.create(); String jsonStr = gson.toJson(json); // 替换无效 // jsonStr = jsonStr.replaceAll("\u003c","<").replaceAll("\u003e", ">"); log.debug("json字符串格式化前: " + json.toString()); log.debug("json字符串格式化后: " + jsonStr); return jsonStr; }
下一篇:
GPT-2中文文本训练及生成