如何取消转义json?

我有一个转义的 json 字符串,比如


我可以在这个站点上取消它,它会产生有效的 json:


{

  "uid": "93",

  "channel_origin": "",

  "sys_ver": "12.2",

  "carrier_network_code": "02",

  "rpn": "首页",

  "app_ver": "9.3.8",

  "event_time": 1556119062,

  "carrier": "中国移动",

  "event_guid": "E36FE60BFBFF405680906E3F95EC3953",

  "ppn": "启动",

  "device_token": "d323828f196a3ca665fa296a2a5f23a57cce83963328b73bd2cf78a7d55575ef",

  "day_first": "442",

  "abtest": "{\"app_home_change\":\"b\",\"app_icon_change\":\"b\"}",

  "pn": "首页",

  "puri": "http://app.mafengwo.cn/launch",

  "day_before": "1",

  "hardware_model": "iPhone10,3",

  "lng": "114.427362",

  "launch_guid": "69904D0912C943AC9D924AC8469CEA4E",

  "app_code": "cn.mafengwo.www",

  "_launch_source_history": "[]",

  "idfv": "20587F0C-0F6E-4CD2-94C3-CE3A10CF0EFD",

  "open_udid": "72F69B19-E612-4A4B-9D2F-8BB6C890421B",

  "carrier_country_code": "cn",

  "dev_ver": "D1908.0",

  "device_type": "ios",

  "ref": "http://app.mafengwo.cn/index?banner=1&channel_id=55&theme=1",

  "lat": "27.818787",

  "event_code": "show_index",

  "idfa": "DC7D35C1-C81B-4884-96C5-C6BAE83FA7DA",

  "uri": "http://app.mafengwo.cn/index?banner=1&channel_id=55&theme=1",

  "channel_code": "",

  "net": "1",

  "_is_foreground": "1",

  "sdk_ver": "20161011",

  "_event_hash": "8ae3b940026375b8252e689113fc8c43f5bfddcf",

  "ip": "39.176.24.64",

  "umddid": 14696,

  "topic": "mobile_event",

  "ctime": 1556119062,

  "ip_s": "node001026",

  "datetime": "2019-04-24T23:17:42+08:00",

  "uuid": "5c5ae87c-3b8b-2786-45b8-b16b969f8e7a",

  "hour": "23",

  "dt": "20190424",

  "minute": "17",

  "user_agent": "Safari Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 mfwappcode/cn.mafengwo.www mfwappver/9.3.8 mfwappdevver/D1908.0 mfwjssdk/1.1 mfwappjsapi/1.7",

  "mfw_env": "product",

  "attr": {

    "_tpt": "信息流",

    "prm_id": "",

    "_tpa": "启动_首页",

    "item_name": "机票火车票",

    "item_source": "",

  }

}

但是我怎么能在Java中做到这一点?


我尝试过StringEscapeUtils.unescapeJavaapache commons,但它产生了类似的东西:


其中更改\\\"为",而不是正确的\"。


PIPIONE
浏览 123回答 1
1回答

米琪卡哇伊

假设你确实有那个字符串,它看起来像是有人对它进行了双重编码(也就是说,将一个结构序列化为 JSON,然后再次将该字符串序列化为 JSON)。如果是这样,您应该能够将其解析为 JSON 并返回一个字符串——然后您可以将其解析为 JSON 以获取结构。我没有使用杰克逊,但类似:ObjectMapper objectMapper = new ObjectMapper();String unwrappedJSON = objectMapper.readValue(json, String.class);YourClass result = objectMapper.readValue(unwrappedJSON, YourClass.class);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java