带有反斜杠的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 + "}"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,992评论 19 139
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,239评论 4 16
  • 闭包(closure)是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个...
    spicychocolate阅读 196评论 0 0
  • 差强人意。6天的张家界之旅并没有想象中那么美好。相信8成的朋友是冲玻璃栈道来张家界的,我亦如是。本就冗长的...
    傲娇的唠叨鼠阅读 301评论 0 0