调用第三方接口接受返回的数据出现转义字符
JSONObject jsonArr = demo.returnPostMehodJson(baseUrl, BODY_JSON);//解密后返回的json
jsonArr的数据为:
{"data":"[{\"id\":\"1\",\"name\":\"\\u4f53\\u80b2\"},{\"id\":\"3\",\"name\":\"\\u519b\\u4e8b\"},{\"id\":\"4\",\"name\":\"\\u641e\\u7b11\"},{\"id\":\"5\",\"name\":\"\\u8d22\\u7ecf\"},{\"id\":\"7\",\"name\":\"\\u79d1\\u6280\"},{\"id\":\"9\",\"name\":\"\\u6c7d\\u8f66\"},{\"id\":\"10\",\"name\":\"\\u97f3\\u4e50\"},{\"id\":\"13\",\"name\":\"\\u5065\\u5eb7\"},{\"id\":\"16\",\"name\":\"\\u5a31\\u4e50\"},{\"id\":\"17\",\"name\":\"\\u5e7f\\u544a\"},{\"id\":\"19\",\"name\":\"\\u8d44\\u8baf\"},{\"id\":\"22\",\"name\":\"\\u7535\\u5f71\"},{\"id\":\"23\",\"name\":\"\\u7535\\u89c6\\u5267\"},{\"id\":\"24\",\"name\":\"\\u7efc\\u827a\"},{\"id\":\"26\",\"name\":\"\\u7f8e\\u98df\"},{\"id\":\"58\",\"name\":\"\\u767e\\u79d1\"},{\"id\":\"59\",\"name\":\"\\u7a8d\\u95e8\"},{\"id\":\"63\",\"name\":\"\\u5386\\u53f2\"},{\"id\":\"68\",\"name\":\"\\u5e7f\\u573a\\u821e\"},{\"id\":\"70\",\"name\":\"\\u4e24\\u6027\"},{\"id\":\"72\",\"name\":\"\\u5065\\u8eab\"},{\"id\":\"79\",\"name\":\"\\u7eaa\\u5f55\\u8bbf\\u8c08\"},{\"id\":\"81\",\"name\":\"\\u6444\\u5f71\"},{\"id\":\"85\",\"name\":\"\\u65f6\\u5c1a\"},{\"id\":\"90\",\"name\":\"\\u6bcd\\u5a74\"},{\"id\":\"93\",\"name\":\"\\u6e38\\u620f\"},{\"id\":\"94\",\"name\":\"\\u60c5\\u611f\"},{\"id\":\"97\",\"name\":\"\\u4e66\\u753b\"},{\"id\":\"98\",\"name\":\"\\u6559\\u80b2\"},{\"id\":\"103\",\"name\":\"\\u804c\\u573a\"},{\"id\":\"104\",\"name\":\"\\u5b97\\u6559\"},{\"id\":\"112\",\"name\":\"\\u6536\\u85cf\"},{\"id\":\"120\",\"name\":\"\\u840c\\u5a03\"},{\"id\":\"121\",\"name\":\"\\u4e8c\\u6b21\\u5143\"},{\"id\":\"122\",\"name\":\"\\u8bfb\\u4e66\"},{\"id\":\"134\",\"name\":\"\\u7f8e\\u5973\"},{\"id\":\"188\",\"name\":\"\\u624b\\u5de5\"},{\"id\":\"191\",\"name\":\"\\u5bb6\\u5c45\"},{\"id\":\"192\",\"name\":\"\\u65c5\\u884c\"},{\"id\":\"194\",\"name\":\"\\u8da3\\u73a9\"},{\"id\":\"196\",\"name\":\"\\u5c11\\u513f\"},{\"id\":\"197\",\"name\":\"\\u661f\\u5ea7\\u547d\\u7406\"},{\"id\":\"199\",\"name\":\"\\u840c\\u5ba0\"},{\"id\":\"209\",\"name\":\"\\u66f2\\u827a\"},{\"id\":\"216\",\"name\":\"\\u4e09\\u519c\"},{\"id\":\"218\",\"name\":\"\\u730e\\u5947\"},{\"id\":\"242\",\"name\":\"\\u52a8\\u6f2b\"},{\"id\":\"869\",\"name\":\"\\u5c0f\\u54c1\"}]","logid":"4110597586","retmsg":"ok","retcode":"200"}
解决方案:
因为只有 data 有转义字符,其他的没有,所以只对data进行去转义字符
先获取 data 数据
1.将JSONObject转换为HashMap
//1.將JSONObject转换为HashMap<String,String>
public static HashMap<String, String> JsonObjectToHashMap(JSONObject jsonObj){
HashMap<String, String> data = new HashMap<String, String>();
Iterator it = jsonObj.keys();
while(it.hasNext()){
String key = String.valueOf(it.next().toString());
String value = (String)jsonObj.get(key).toString();
data.put(key, value);
System.out.println(data);
return data;
2.再调用方法获取data
HashMap<String, String> stringStringHashMap = demo.JsonObjectToHashMap(jsonArr);
String data = stringStringHashMap.get("data");
对data进行去转义字符
//先有这个依赖,调用工具类
import org.apache.commons.lang.StringEscapeUtils;
//进行去转义字符
String s = StringEscapeUtils.unescapeJava(data)
问题:调用第三方接口接受返回的数据出现转义字符JSONObject jsonArr = demo.returnPostMehodJson(baseUrl, BODY_JSON);//解密后返回的jsonjsonArr的数据为:{"data":"[{\"id\":\"1\",\"name\":\"\\u4f53\\u80b2\"},{\"id\":\"3\",\"name\":\"\\u519b\\u4e8b\"},{\"id\":\"4\",\"name\":\"\\u641e\\u7b
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelp...
java 处理json格式数据
中的
转义斜杠
1、{“Count”:“3”,“ErrorString”:""}
2、将1
中的json格式字符串处理为json对象,需要先
去掉转义""
result = StringEscapeUtils.unescape
Java(result);
JSONObject jsonObject = new
JSONObject(result);
jsonObject.get("Count"); //得到json属性值
一开始使用
JSONObject.toJSONString() 把json对象转为json字符串,但是在进行kafka进行消费的
时候,发现接收到的json总是带
转义字符,处理起来比较麻烦
于是使用如下方法,先转为Object对象,再转为字符串:
JSONObject.toJSON(
jsonObject).toString();
我们日常使用的API接口中返回值大多数都是Json格式,当Json返回值中出现转义字符时怎么办
转义字符的Json例子:
“{“errcode”:0,“errmsg”:“成功”,“result”:[{“msg”:“success”,“code”:0}]}”
如果我们通过在线去除转义工具的话可以达到我们需要的效果:在线转义工具
这是去除转义后的json
{“errcode”:0,“errmsg”:“成功”,“result”:[{“msg”:“success”,“code”:0}]}
但是我们程序后台没办法调用
扫描二维码读取:
KGYXKkFufUOoBTdCI+w0VD1pInVkWdVw9HeRDT8LRRhkwVOiRx1QNgi9jjJSl6Lqm4ZC10L75KIrRTyOSDkZBVdn1MdlzfOxb2sTbZF82Sp3srf0phd3sf\/82HcUm0aF6lal6xAuwVwlVEaX9yZmP68ADQ==
其
中红色字体为转移符, 无法识别
JSon串在被串行化后保存在文件中,读取字符串时,是不能直接拿来用JSON.parse()解析为JSON 对象的。因为它是一个字符串,不是一个合法的JSON对象格式。例如下面的JSON串保存在文件中,读出来不能直接解析:
“{\”resourceId\”:\”dfead70e4ec5c11e43514000ced0cdcaf\”,\”properties\”:{\”process_id\”:\”process4\”,\”name\”:\”\”,\”documentation\”:\”\”,\”processformtemplate\”:\”\”}}”
这个串如果出现在代码中是没有问题的
import org.apache.commons.lang.StringEscapeUtils;
public static void main(String[] args) {
CustomerDataDto custo...
在Java中,使用不同的JSON库可能会导致JSON对象中的转义字符处理方式不同。下面是两种常见的JSON库的示例:
1. 使用org.json.JSONObject:
```java
import org.json.JSONObject;
public class Test {
public static void main(String[] args) throws Exception {
JSONObject json = new JSONObject();
json.put("name", "123");
JSONObject json2 = new JSONObject();
json2.put("name2", "456");
json2.put("json", json.toString()); // 这里会自动加上转义字符
System.out.println(json2);
2. 使用net.sf.json.JSONObject:
```java
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) throws Exception {
JSONObject json = new JSONObject();
json.put("name", "123");
JSONObject json2 = new JSONObject();
json2.put("name2", "456");
json2.put("json", json); // 以json对象的形式
System.out.println(json2);
json2.put("json", json.toString());
System.out.println(json2);
这两个示例展示了在不同的JSON库中如何处理转义字符。在org.json.JSONObject中,当将JSON对象转换为字符串时,会自动添加转义字符。而在net.sf.json.JSONObject中,无论是否将JSON对象转换为字符串,都会以JSON对象的形式存储。