java - 从java中的复杂JSON中提取特定值

标签 java json

我有一个有效的复杂 json,我需要解析这个 json 并用 java 打印这个复杂 json 中的 ak、dt 和 mi 的值...希望你能帮助我...

{
  "CP": "{\"e\":{\"h\":{\"ak\":\"1c8d1d7eaa32ff3f58a882\",\"at\":\"app\"},\"c\":{\"dt\":\"MEmulator\",\"mi\":\"DD278047D56BF292F1FC16F\",\"ui\":\"m4J\/2s=\",\"av\":\"0.2\",\"pn\":\"WP\",\"pv\":\"7.10\",\"nv\":\"C# 1.1.0\",\"al\":\"en\"},\"b\":[{\"ts\":139658547,\"tz\":-400,\"s\":\"StartUpScreen\",\"et\":8,\"ev\":\"sessionStart\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{\"DaySessionStarted\":\"Tuesday\"}},{\"ts\":1319549658751,\"tz\":-400,\"s\":\"StartUpScreen\",\"et\":3,\"ev\":\"AutomaticFeedRefresh\",\"si\":\"19477682-de5ec331dc33\",\"tt\":{}},{\"ts\":1319549675609,\"tz\":-400,\"s\":\"MainScreen\",\"et\":3,\"ev\":\"MainScreen Event\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{}},{\"ts\":1319549677179,\"tz\":-400,\"s\":\"MainScreen\",\"et\":3,\"ev\":\"MainScreen Event\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{}},{\"ts\":1319549678401,\"tz\":-400,\"s\":\"MainScreen\",\"et\":3,\"ev\":\"MainScreen Event\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{}},{\"ts\":1319549679973,\"tz\":-400,\"s\":\"MainScreen\",\"et\":3,\"ev\":\"MainScreen Event\",\"si\":\"19477682-c9-19bec331dc33\",\"tt\":{}}],\"tt\":{\"OSV\":\"ME\"}}}",
  "SP": {
    "httpHeaders": {
      "x-bluecoat-via": [
        "35D3468F4D5F18"
      ],
      "content-type": [
        "application\/x-form-ur"
      ],
      "connection": [
        "Keep-Alive"
      ],
      "host": [
        "20.198.134.198:8080"
      ],
      "accept": [
        "text\/html, image\/gif, image\/jpeg, *; q=.2, *\/*; q=.2"
      ],
      "content-length": [
        "1791"
      ],
      "user-agent": [
        "Java\/1.6.0_23"
      ]
    },
    "senderIp": [
      "112.101.216.113"
    ],
    "receiveTimeStamp": "2012-06-26T06:29:36+0000"
  }
}

最佳答案

使用json-path .

它就像 JSON 的 xpath,允许您在 JSON 对象上编写字符串查询。 项目网站上有很多示例显示了可能的用法,但在您的情况下,它可能只是一个简单的点符号

所提供 JSON 的示例:

// First extract the CP value, as its JSON-string-inside-JSON:
String cp = JsonPath.read(yourJsonString, "$.CP");

// Treat the `cp` as another JSON-string, and extract the ak value:
String ak = JsonPath.read(cp, "$.e.h.ak");

// Do the rest yourself...

关于java - 从java中的复杂JSON中提取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844180/

相关文章:

ruby-on-rails - 在 Windows Server : msvcrt-ruby18. dll 上构建 Ruby 堆栈

java - 使用 RetroFit for Android 解析嵌套的 JSON

java.io.IOException : unexpected end of stream on okhttp3. 地址@e31061fc

json - 用于更新 JSON 中的模型值的 Ruby 代码

java - java中的依赖项目是否采用父项目的log4j配置?

java - 使用 Java -jar 运行 Spring Boot

java - JButton 不会显示另一个 jframe

Java错误 'error: cannot find symbol'

Java MDB - 如何跟踪已处理的消息数量

javascript - 我有一个 JavaScript "Unexpected Identifier"错误。谁能帮我?