带有反斜杠的Json如何解析

一、背景

需求:极光推送的数据,解析Json数据并做弹窗展示。

问题:原本后台传给极光的是正常的Json数据,然后经过极光处理后,整个Json数据都带有反斜杠。

{"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,那么有问题自然要解决;

看到这么多反斜杠,当然要想办法清掉,首先,我们拿到keyword,

JSONObject extraJson = new JSONObject(extra);

String keyWord = extraJson.optString("keyword");

然后,replace("\\\"", "\"")将 \" 换成 " ,\\u还要再替换掉,replace("\\\\u", "\\u"),经过两轮的替换,终于还原成正常的Json了

最后还要将keyword拼接成Json:"{\"keyword\":" + keyWord + "}"

你可能感兴趣的:(带有反斜杠的Json如何解析)