gpt4 book ai didi

java - 解析谷歌地图矩阵数据

转载 作者:行者123 更新时间:2023-11-30 06:25:09 25 4
gpt4 key购买 nike

我一直在尝试借助Java中的simple-Json来解析这些数据,我需要一个特定的数据集->“持续时间”-“文本”以及相应的值。

我尝试过使用https://www.journaldev.com/12668/json-simple-example以及 Stack Overflow 上的许多其他示例,但仍未能解决该问题。

有人有解决办法吗?

   "destination_addresses" : [ "Wareham, UK" ],
"origin_addresses" : [ "Longtown, Carlisle CA6, UK" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "378 mi",
"value" : 607958
},
"duration" : {
"text" : "6 hours 19 mins",
"value" : 22730
},
"status" : "OK"
}
]
}
],
"status" : "OK"

最佳答案

您可以使用GSON JSON 序列化/反序列化。您的解决方案可能是这样的:

Java 7+:

public List<String> parse(final Gson gson, final String jsonText) {
final JsonObject json = gson.fromJson(jsonText, JsonObject.class);
final JsonArray rowsJson = json.getAsJsonArray("rows");

final List<String> durations = new ArrayList<>(rowsJson.size());

for (JsonElement row : rowsJson) {
final JsonArray elements = row
.getAsJsonObject()
.getAsJsonArray("elements");

for (JsonElement element : elements) {
final JsonObject duration = element
.getAsJsonObject()
.getAsJsonObject("duration");

durations.add(duration.getAsJsonPrimitive("text").getAsString());
}
}

return durations;
}

Java 8+:

public List<String> parse(final Gson gson, final String jsonText) {
final JsonObject json = gson.fromJson(jsonText, JsonObject.class);

return StreamSupport
.stream(json.getAsJsonArray("rows").spliterator(), false)
.map(row -> row.getAsJsonObject().getAsJsonArray("elements"))
.flatMap(elements -> StreamSupport.stream(elements.spliterator(), false))
.map(element -> element.getAsJsonObject().getAsJsonObject("duration"))
.map(duration -> duration.getAsJsonPrimitive("text").getAsString())
.collect(Collectors.toList());
}

示例:

public static void main(final String... args) {
final Gson gson = new Gson();
System.out.println(parse(gson, yourJSON)); // Output -> [6 hours 19 mins]
}

或者您可以使用json-simple ,像这样:

Java 7+:

public List<String> parse(final JSONParser parser, final String jsonText)
throws ParseException {
final JSONObject json = (JSONObject) parser.parse(jsonText);
final JSONArray rows = (JSONArray) json.get("rows");

final List<String> durations = new ArrayList<>();

for (final Object row : rows) {
final JSONArray elements = ((JSONArray) ((JSONObject) row).get("elements"));
for (Object element : elements) {
final JSONObject duration = (JSONObject) ((JSONObject) element).get("duration");
durations.add((String) duration.get("text"));
}
}

return durations;
}

示例:

public static void main(final String... args) throws ParseException {
System.out.println(parse(new JSONParser(), yourJson)); // Output -> [6 hours 19 mins]
}

关于java - 解析谷歌地图矩阵数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47319747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com