一、背景
需求:極光推送的數(shù)據(jù),解析Json數(shù)據(jù)并做彈窗展示。
問題:原本后臺傳給極光的是正常的Json數(shù)據(jù),然后經(jīng)過極光處理后,整個Json數(shù)據(jù)都帶有反斜杠。
{"linkurl":null,"type":10,"keyword":"[{\"name\":\"\\u606d\\u8d3a\\u65b0\\u6625\",\"value\":\"5888\",\"unit\":\"\\u5143\",\"catid\":\"3\"},{\"name\":\"\\u5409\\u7965\\u5982\\u610f\",\"value\":\"6.66\",\"unit\":\"%\",\"catid\":\"1\"},{\"name\":\"\\u5409\\u661f\\u9ad8\\u7167\",\"value\":\"58\",\"unit\":\"\\u5143\",\"catid\":\"3\"},{\"name\":\"\\u5409\\u7965\\u5982\\u610f\",\"value\":\"4.8\",\"unit\":\"%\",\"catid\":\"1\"},{\"name\":\"\\u5409\\u661f\\u9ad8\\u7167\",\"value\":\"12\",\"unit\":\"\\u5143\",\"catid\":\"3\"}]"}
keyword中好多反斜杠“\”并且還有Unicode的\\u606d\\u8d3a\\u65b0\\u6625\
二、接下來
只要Json解析必然拋出異常JsonSyntaxException,那么有問題自然要解決;
看到這么多反斜杠,當(dāng)然要想辦法清掉,首先,我們拿到keyword,
JSONObject extraJson = new JSONObject(extra);
String keyWord = extraJson.optString("keyword");
然后,replace("\\\"", "\"")將 \" 換成 " ,\\u還要再替換掉,replace("\\\\u", "\\u"),經(jīng)過兩輪的替換,終于還原成正常的Json了
最后還要將keyword拼接成Json:"{\"keyword\":" + keyWord + "}"