У меня есть Json, как показано ниже
{"pd":"{\"e\":{\"h\":{\"ak\":\"120\",\"at\":\"app\"},\"b\":[{\"ts\":1319549658547,\"tz\":-400,\"s\":\"StartUpScreen\",\"et\":8,\"ev\":\"sessionStart\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{\"day\":\"Tuesday\"}},{\"ts\":132,\"tz\":-400,\"s\":\"StartUpScreen\",\"et\":3,\"ev\":\"AutomaticFeedRefresh\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{}},{\"ts\":131,\"tz\":-400,\"s\":\"MainScreen\",\"et\":3,\"ev\":\"MainScreen Event\",\"si\":\"19477682-de55-414f-82c9-19bec331dc33\",\"tt\":{}}],\"tt\":{\"OSV\":\"7.10\"}}}","serverPayload":{"httpHeaders":{"x-bluecoat-via":["35D3468EFF4D5F18"],"content-type":["application\/x-www-form-urlencoded"]},"senderIp":["101.100.000.100"]}}
Мне просто нужны значения ak
, b [ts,si and tt[day]]
и senderIp
. Теперь у меня есть 2 вопроса: как мне извлечь все атрибуты ts в b и senderIp. Я использовал приведенный ниже код для ak, ts и si. Я не уверен, как я получаю "tt", также, когда я запускаю этот код, я получаю исключение, как показано ниже
String pd = JsonPath.read(jsonString, "$.pd");
String ak = JsonPath.read(pd, "$e.h.ak");
String ak = JsonPath.read(pd, "$e.h.b[0]");
// String b = JsonPath.read(pd,"$.e.b[0][0]");
// String b = JsonPath.read(pd,"$.e.b[0][5]");
System.out.println("value of ak: "+ak);
Исключение в потоке "main" java.lang.ClassCastException: net.minidev.json.JSONObject cannot be cast to java.lang.String
.