在 Java 内检索 Json 数据
Retrieve Json Data within Java
我想在这件事上寻求你的帮助。
我以前从未使用过 Json / Gson,这就是我想做的。
- 对于一个研究项目,我们想使用 HERE API,它提供了一个字符串,其中包含两个地址之间的路线时间。生成包含两个地址纬度和经度的 URL 已经很好用了。如果我点击 link 打开这个页面:
JSON 视图:
原始字符串:
{
"response": {
"metaInfo": {
"timestamp": "2020-06-09T06:25:38Z",
"mapVersion": "8.30.109.150",
"moduleVersion": "7.2.202021-7166",
"interfaceVersion": "2.6.76",
"availableMapVersion": [
"8.30.109.150"
]
},
"route": [
{
"waypoint": [
{
"linkId": "+1131186975",
"mappedPosition": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"originalPosition": {
"latitude": 51.3547199,
"longitude": 6.1534
},
"type": "stopOver",
"spot": 0.1907895,
"sideOfStreet": "neither",
"mappedRoadName": "Tegelseweg",
"label": "Tegelseweg - N271",
"shapeIndex": 0,
"source": "user"
},
{
"linkId": "+1151950438",
"mappedPosition": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"originalPosition": {
"latitude": 52.3654734,
"longitude": 4.8532099
},
"type": "stopOver",
"spot": 0.3333333,
"sideOfStreet": "neither",
"mappedRoadName": "Hoofdweg",
"label": "Hoofdweg",
"shapeIndex": 1367,
"source": "user"
}
],
"mode": {
"type": "fastest",
"transportModes": [
"truck"
],
"trafficMode": "disabled",
"feature": []
},
"leg": [
{
"start": {
"linkId": "+1131186975",
"mappedPosition": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"originalPosition": {
"latitude": 51.3547199,
"longitude": 6.1534
},
"type": "stopOver",
"spot": 0.1907895,
"sideOfStreet": "neither",
"mappedRoadName": "Tegelseweg",
"label": "Tegelseweg - N271",
"shapeIndex": 0,
"source": "user"
},
"end": {
"linkId": "+1151950438",
"mappedPosition": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"originalPosition": {
"latitude": 52.3654734,
"longitude": 4.8532099
},
"type": "stopOver",
"spot": 0.3333333,
"sideOfStreet": "neither",
"mappedRoadName": "Hoofdweg",
"label": "Hoofdweg",
"shapeIndex": 1367,
"source": "user"
},
"length": 183631,
"travelTime": 8364,
"maneuver": [
{
"position": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"instruction": "Head toward <span class=\"toward_street\">Hulsterweg</span> on <span class=\"street\">Tegelseweg</span> <span class=\"number\">(N271)</span>. <span class=\"distance-description\">Go for <span class=\"length\">123 m</span>.</span>",
"travelTime": 16,
"length": 123,
"id": "M1",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.3555801,
"longitude": 6.154511
},
"instruction": "Make a U-Turn onto <span class=\"next-street\">Tegelseweg</span> <span class=\"number\">(N271)</span>. <span class=\"distance-description\">Go for <span class=\"length\">274 m</span>.</span>",
"travelTime": 126,
"length": 274,
"id": "M2",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.3541317,
"longitude": 6.1523652
},
"instruction": "Turn <span class=\"direction\">right</span> and take ramp onto <span class=\"number\">A73</span> toward <span class=\"sign\"><span lang=\"nl\">Eindhoven</span>/<span lang=\"nl\">Nijmegen</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">64.3 km</span>.</span>",
"travelTime": 2746,
"length": 64315,
"id": "M3",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8447292,
"longitude": 5.7708693
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">A73</span>. <span class=\"distance-description\">Go for <span class=\"length\">3.8 km</span>.</span>",
"travelTime": 166,
"length": 3793,
"id": "M4",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.856252,
"longitude": 5.7191348
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Rotterdam</span>/<span lang=\"nl\">Arnhem</span></span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">2.3 km</span>.</span>",
"travelTime": 102,
"length": 2338,
"id": "M5",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8729675,
"longitude": 5.7295954
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">2.5 km</span>.</span>",
"travelTime": 103,
"length": 2471,
"id": "M6",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.893481,
"longitude": 5.7424915
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">1.4 km</span>.</span>",
"travelTime": 61,
"length": 1440,
"id": "M7",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.9014311,
"longitude": 5.7587779
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Rotterdam</span>/<span lang=\"nl\">Tiel</span></span> onto <span class=\"number\">A15</span>. <span class=\"distance-description\">Go for <span class=\"length\">39.8 km</span>.</span>",
"travelTime": 1735,
"length": 39789,
"id": "M8",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8583441,
"longitude": 5.2429676
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Utrecht</span></span> onto <span class=\"number\">A2</span>. <span class=\"distance-description\">Go for <span class=\"length\">59.0 km</span>.</span>",
"travelTime": 2555,
"length": 58990,
"id": "M9",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3197055,
"longitude": 4.9161673
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">E35</span> <span class=\"next-street\">(Knooppunt Amstel)</span> toward <span class=\"sign\"><span lang=\"nl\">E19</span>/<span lang=\"nl\">RING</span>/<span lang=\"nl\">Luchthaven Schiphol</span>/<span lang=\"nl\">Zaanstad</span>/<span lang=\"nl\">A10</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">714 m</span>.</span>",
"travelTime": 32,
"length": 714,
"id": "M10",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3259926,
"longitude": 4.9142146
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"next-street\">Knooppunt Amstel</span> toward <span class=\"sign\"><span lang=\"nl\">Luchthaven Schiphol</span>/<span lang=\"nl\">A10</span>/<span lang=\"nl\">E19</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">1.1 km</span>.</span>",
"travelTime": 70,
"length": 1140,
"id": "M11",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3305416,
"longitude": 4.9042583
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">A10</span> <span class=\"next-street\">(Ring Amsterdam)</span>. <span class=\"distance-description\">Go for <span class=\"length\">6.3 km</span>.</span>",
"travelTime": 321,
"length": 6343,
"id": "M12",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3544562,
"longitude": 4.8427069
},
"instruction": "Take exit <span class=\"exit\">6</span> toward <span class=\"sign\"><span lang=\"nl\">Osdorp</span>/<span lang=\"nl\">Overtoomse Veld</span>/<span lang=\"nl\">Oud-West</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">367 m</span>.</span>",
"travelTime": 63,
"length": 367,
"id": "M13",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3577499,
"longitude": 4.8430288
},
"instruction": "Turn <span class=\"direction\">right</span> onto <span class=\"next-street\">Cornelis Lelylaan</span> <span class=\"number\">(s106)</span> toward <span class=\"sign\"><span lang=\"nl\">Oud-West</span>/<span lang=\"nl\">Centrum</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">555 m</span>.</span>",
"travelTime": 77,
"length": 555,
"id": "M14",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3579645,
"longitude": 4.8511183
},
"instruction": "Keep <span class=\"direction\">left</span> toward <span class=\"sign\"><span lang=\"nl\">De Baarsjes</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">126 m</span>.</span>",
"travelTime": 31,
"length": 126,
"id": "M15",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.358104,
"longitude": 4.8529422
},
"instruction": "Take the <span class=\"exit\">2nd exit</span> from Surinameplein roundabout onto <span class=\"next-street\">Surinameplein</span>. <span class=\"distance-description\">Go for <span class=\"length\">134 m</span>.</span>",
"travelTime": 39,
"length": 134,
"id": "M16",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3590052,
"longitude": 4.8534894
},
"instruction": "Continue on <span class=\"next-street\">Hoofdweg</span>. <span class=\"distance-description\">Go for <span class=\"length\">719 m</span>.</span>",
"travelTime": 121,
"length": 719,
"id": "M17",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"instruction": "Arrive at <span class=\"street\">Hoofdweg</span>.",
"travelTime": 0,
"length": 0,
"id": "M18",
"_type": "PrivateTransportManeuverType"
}
]
}
],
"summary": {
"distance": 183631,
"trafficTime": 8427,
"baseTime": 8364,
"flags": [
"tollroad",
"tunnel",
"motorway",
"builtUpArea"
],
"text": "The trip takes <span class=\"length\">184 km</span> and <span class=\"time\">2:19 h</span>.",
"travelTime": 8364,
"_type": "RouteSummaryType"
}
}
],
"language": "en-us"
}
}
我只需要整个Json字符串中黄色标记的部分(通行时间:8364)。
最简单的方法是什么?
我当前的代码如下所示,它 returns null:
URL host = new URL(uri);
HttpURLConnection con = (HttpURLConnection) host.openConnection();
con.setRequestMethod("GET");
System.out.println(
"Response code - message: " + con.getResponseCode() + " - " + con.getResponseMessage());
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
Reader reader = new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8);
Gson gson = new GsonBuilder().create();
con.getResponseMessage 打印连接正常,因此 link 有效。
- 我在谷歌上搜索了几个解决方案,但我无法导入必要的库,如果我尝试导入它们以应用我在 Whosebug 上找到的这个解决方案,IntelliJ 会显示错误:
How to get the JSON code of a web page
Json 库的导入:
我是导入外部库的新手,所以我不知道如何处理这个问题
感谢您的帮助! :)
如果您正在使用 Gson probaly,请继续这样做,不需要导入任何 Json 库。
JsonParser parser = new JsonParser();
JsonElement json = parser.parse(your_json_string);
JsonArray route = json.getAsJsonObject().get("response").getAsJsonObject().get("route")getAsJsonArray();
int yourTrafficTime = route.get(0).getAsJsonObject().get("summary").getAsJsonObject().get("trafficTime").getAsInt();
您可以创建模型 类 并使用 GSON
来解析它们。这将使您可以轻松访问 json 响应中的任何字段。
- 型号类
class ResponseData {
private Response response;
// getters and setters
}
class Response {
private List<Route> route;
// getters and setters
}
class Route {
private Summary summary;
// getters and setters
}
class Summary {
private Long trafficTime;
// getters and setters
}
- 解析json对模型的响应
Reader reader = new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8);
Gson gson = new Gson();
ResponseData responseData = gson.fromJson(reader, ResponseData.class);
responseData.getResponse().getRoute().forEach(route -> System.out.println(route.getSummary().getTrafficTime()));
输出:
8427
我想在这件事上寻求你的帮助。 我以前从未使用过 Json / Gson,这就是我想做的。
- 对于一个研究项目,我们想使用 HERE API,它提供了一个字符串,其中包含两个地址之间的路线时间。生成包含两个地址纬度和经度的 URL 已经很好用了。如果我点击 link 打开这个页面:
JSON 视图:
原始字符串:
{
"response": {
"metaInfo": {
"timestamp": "2020-06-09T06:25:38Z",
"mapVersion": "8.30.109.150",
"moduleVersion": "7.2.202021-7166",
"interfaceVersion": "2.6.76",
"availableMapVersion": [
"8.30.109.150"
]
},
"route": [
{
"waypoint": [
{
"linkId": "+1131186975",
"mappedPosition": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"originalPosition": {
"latitude": 51.3547199,
"longitude": 6.1534
},
"type": "stopOver",
"spot": 0.1907895,
"sideOfStreet": "neither",
"mappedRoadName": "Tegelseweg",
"label": "Tegelseweg - N271",
"shapeIndex": 0,
"source": "user"
},
{
"linkId": "+1151950438",
"mappedPosition": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"originalPosition": {
"latitude": 52.3654734,
"longitude": 4.8532099
},
"type": "stopOver",
"spot": 0.3333333,
"sideOfStreet": "neither",
"mappedRoadName": "Hoofdweg",
"label": "Hoofdweg",
"shapeIndex": 1367,
"source": "user"
}
],
"mode": {
"type": "fastest",
"transportModes": [
"truck"
],
"trafficMode": "disabled",
"feature": []
},
"leg": [
{
"start": {
"linkId": "+1131186975",
"mappedPosition": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"originalPosition": {
"latitude": 51.3547199,
"longitude": 6.1534
},
"type": "stopOver",
"spot": 0.1907895,
"sideOfStreet": "neither",
"mappedRoadName": "Tegelseweg",
"label": "Tegelseweg - N271",
"shapeIndex": 0,
"source": "user"
},
"end": {
"linkId": "+1151950438",
"mappedPosition": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"originalPosition": {
"latitude": 52.3654734,
"longitude": 4.8532099
},
"type": "stopOver",
"spot": 0.3333333,
"sideOfStreet": "neither",
"mappedRoadName": "Hoofdweg",
"label": "Hoofdweg",
"shapeIndex": 1367,
"source": "user"
},
"length": 183631,
"travelTime": 8364,
"maneuver": [
{
"position": {
"latitude": 51.3547214,
"longitude": 6.1533969
},
"instruction": "Head toward <span class=\"toward_street\">Hulsterweg</span> on <span class=\"street\">Tegelseweg</span> <span class=\"number\">(N271)</span>. <span class=\"distance-description\">Go for <span class=\"length\">123 m</span>.</span>",
"travelTime": 16,
"length": 123,
"id": "M1",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.3555801,
"longitude": 6.154511
},
"instruction": "Make a U-Turn onto <span class=\"next-street\">Tegelseweg</span> <span class=\"number\">(N271)</span>. <span class=\"distance-description\">Go for <span class=\"length\">274 m</span>.</span>",
"travelTime": 126,
"length": 274,
"id": "M2",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.3541317,
"longitude": 6.1523652
},
"instruction": "Turn <span class=\"direction\">right</span> and take ramp onto <span class=\"number\">A73</span> toward <span class=\"sign\"><span lang=\"nl\">Eindhoven</span>/<span lang=\"nl\">Nijmegen</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">64.3 km</span>.</span>",
"travelTime": 2746,
"length": 64315,
"id": "M3",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8447292,
"longitude": 5.7708693
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">A73</span>. <span class=\"distance-description\">Go for <span class=\"length\">3.8 km</span>.</span>",
"travelTime": 166,
"length": 3793,
"id": "M4",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.856252,
"longitude": 5.7191348
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Rotterdam</span>/<span lang=\"nl\">Arnhem</span></span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">2.3 km</span>.</span>",
"travelTime": 102,
"length": 2338,
"id": "M5",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8729675,
"longitude": 5.7295954
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">2.5 km</span>.</span>",
"travelTime": 103,
"length": 2471,
"id": "M6",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.893481,
"longitude": 5.7424915
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"number\">A50</span>. <span class=\"distance-description\">Go for <span class=\"length\">1.4 km</span>.</span>",
"travelTime": 61,
"length": 1440,
"id": "M7",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.9014311,
"longitude": 5.7587779
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Rotterdam</span>/<span lang=\"nl\">Tiel</span></span> onto <span class=\"number\">A15</span>. <span class=\"distance-description\">Go for <span class=\"length\">39.8 km</span>.</span>",
"travelTime": 1735,
"length": 39789,
"id": "M8",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 51.8583441,
"longitude": 5.2429676
},
"instruction": "Take the exit toward <span class=\"sign\"><span lang=\"nl\">Utrecht</span></span> onto <span class=\"number\">A2</span>. <span class=\"distance-description\">Go for <span class=\"length\">59.0 km</span>.</span>",
"travelTime": 2555,
"length": 58990,
"id": "M9",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3197055,
"longitude": 4.9161673
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">E35</span> <span class=\"next-street\">(Knooppunt Amstel)</span> toward <span class=\"sign\"><span lang=\"nl\">E19</span>/<span lang=\"nl\">RING</span>/<span lang=\"nl\">Luchthaven Schiphol</span>/<span lang=\"nl\">Zaanstad</span>/<span lang=\"nl\">A10</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">714 m</span>.</span>",
"travelTime": 32,
"length": 714,
"id": "M10",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3259926,
"longitude": 4.9142146
},
"instruction": "Keep <span class=\"direction\">left</span> onto <span class=\"next-street\">Knooppunt Amstel</span> toward <span class=\"sign\"><span lang=\"nl\">Luchthaven Schiphol</span>/<span lang=\"nl\">A10</span>/<span lang=\"nl\">E19</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">1.1 km</span>.</span>",
"travelTime": 70,
"length": 1140,
"id": "M11",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3305416,
"longitude": 4.9042583
},
"instruction": "Keep <span class=\"direction\">right</span> onto <span class=\"number\">A10</span> <span class=\"next-street\">(Ring Amsterdam)</span>. <span class=\"distance-description\">Go for <span class=\"length\">6.3 km</span>.</span>",
"travelTime": 321,
"length": 6343,
"id": "M12",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3544562,
"longitude": 4.8427069
},
"instruction": "Take exit <span class=\"exit\">6</span> toward <span class=\"sign\"><span lang=\"nl\">Osdorp</span>/<span lang=\"nl\">Overtoomse Veld</span>/<span lang=\"nl\">Oud-West</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">367 m</span>.</span>",
"travelTime": 63,
"length": 367,
"id": "M13",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3577499,
"longitude": 4.8430288
},
"instruction": "Turn <span class=\"direction\">right</span> onto <span class=\"next-street\">Cornelis Lelylaan</span> <span class=\"number\">(s106)</span> toward <span class=\"sign\"><span lang=\"nl\">Oud-West</span>/<span lang=\"nl\">Centrum</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">555 m</span>.</span>",
"travelTime": 77,
"length": 555,
"id": "M14",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3579645,
"longitude": 4.8511183
},
"instruction": "Keep <span class=\"direction\">left</span> toward <span class=\"sign\"><span lang=\"nl\">De Baarsjes</span></span>. <span class=\"distance-description\">Go for <span class=\"length\">126 m</span>.</span>",
"travelTime": 31,
"length": 126,
"id": "M15",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.358104,
"longitude": 4.8529422
},
"instruction": "Take the <span class=\"exit\">2nd exit</span> from Surinameplein roundabout onto <span class=\"next-street\">Surinameplein</span>. <span class=\"distance-description\">Go for <span class=\"length\">134 m</span>.</span>",
"travelTime": 39,
"length": 134,
"id": "M16",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3590052,
"longitude": 4.8534894
},
"instruction": "Continue on <span class=\"next-street\">Hoofdweg</span>. <span class=\"distance-description\">Go for <span class=\"length\">719 m</span>.</span>",
"travelTime": 121,
"length": 719,
"id": "M17",
"_type": "PrivateTransportManeuverType"
},
{
"position": {
"latitude": 52.3654734,
"longitude": 4.8532104
},
"instruction": "Arrive at <span class=\"street\">Hoofdweg</span>.",
"travelTime": 0,
"length": 0,
"id": "M18",
"_type": "PrivateTransportManeuverType"
}
]
}
],
"summary": {
"distance": 183631,
"trafficTime": 8427,
"baseTime": 8364,
"flags": [
"tollroad",
"tunnel",
"motorway",
"builtUpArea"
],
"text": "The trip takes <span class=\"length\">184 km</span> and <span class=\"time\">2:19 h</span>.",
"travelTime": 8364,
"_type": "RouteSummaryType"
}
}
],
"language": "en-us"
}
}
我只需要整个Json字符串中黄色标记的部分(通行时间:8364)。 最简单的方法是什么? 我当前的代码如下所示,它 returns null:
URL host = new URL(uri);
HttpURLConnection con = (HttpURLConnection) host.openConnection();
con.setRequestMethod("GET");
System.out.println(
"Response code - message: " + con.getResponseCode() + " - " + con.getResponseMessage());
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
Reader reader = new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8);
Gson gson = new GsonBuilder().create();
con.getResponseMessage 打印连接正常,因此 link 有效。
- 我在谷歌上搜索了几个解决方案,但我无法导入必要的库,如果我尝试导入它们以应用我在 Whosebug 上找到的这个解决方案,IntelliJ 会显示错误: How to get the JSON code of a web page
Json 库的导入:
我是导入外部库的新手,所以我不知道如何处理这个问题
感谢您的帮助! :)
如果您正在使用 Gson probaly,请继续这样做,不需要导入任何 Json 库。
JsonParser parser = new JsonParser();
JsonElement json = parser.parse(your_json_string);
JsonArray route = json.getAsJsonObject().get("response").getAsJsonObject().get("route")getAsJsonArray();
int yourTrafficTime = route.get(0).getAsJsonObject().get("summary").getAsJsonObject().get("trafficTime").getAsInt();
您可以创建模型 类 并使用 GSON
来解析它们。这将使您可以轻松访问 json 响应中的任何字段。
- 型号类
class ResponseData {
private Response response;
// getters and setters
}
class Response {
private List<Route> route;
// getters and setters
}
class Route {
private Summary summary;
// getters and setters
}
class Summary {
private Long trafficTime;
// getters and setters
}
- 解析json对模型的响应
Reader reader = new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8);
Gson gson = new Gson();
ResponseData responseData = gson.fromJson(reader, ResponseData.class);
responseData.getResponse().getRoute().forEach(route -> System.out.println(route.getSummary().getTrafficTime()));
输出:
8427