gpt4 book ai didi

java - 在 Java 中从 JSON 文件中检索特定字段

转载 作者:行者123 更新时间:2023-11-29 07:40:02 25 4
gpt4 key购买 nike

我正在尝试从 JSON file 中检索特定字段正在从 Wunderground.com 检索。

我试图在此发布相关信息,但无法正确设置格式。我正在尝试在“current_observation”部分下检索经度和纬度。我正在使用 Gson 2.2.4。这是我目前拥有的代码:

    String key = "aaaaaaaaaaaaaaaa";
String sURL = "http://api.wunderground.com/api/" + key + "/conditions/forecast/q/19104.json";

URL url = new URL(sURL);
URLConnection request = (URLConnection) url.openConnection();
request.connect();

JsonParser jp = new JsonParser(); //from gson
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
JsonElement latitude = rootobj.get("current_observation");

System.out.println(latitude);

当前获取“current_observation”标签下的所有内容,并将其打印到屏幕上。我不知道如何访问那之下的任何东西。我在这里看到了几篇关于使用 JsonArray 的帖子,但无论我尝试了什么,我都无法让它正常工作。那么如何从 JSON 文件中检索特定字段呢?感谢您给我的任何指导,如果我需要提供任何其他信息,请告诉我。

最佳答案

JsonElement 是一个通用接口(interface),它是其他两个重要类的子类,它们是 JsonArrayJsonObject .

由于您没有为 Gson 提供一种类型来反射(reflect)来自(并填充相应对象)的信息,因此您必须手动进行。因为 "current_observation" 是一个字典类型,所以它是一个 JsonObject,你可以这样做:

 JsonObject observation = root.getAsJsonObject().get("current_observation").getAsJsonObject();

此时您可以像以前一样检索特定字段:

float longitude = observation.get("longitude").getAsFloat();

等等。

对于特定字段,您可能希望提供自定义反序列化器或序列化器。实际上最好的解决方案是将您的镜像结构放在代码存储库中,例如:

class Observation
{
float latitude;
float longitude;
// other fields you are interested in
}

这样您就可以提供自己的deserializer并做:

Observation observation = gson.fromJson(root.getAsJsonObject().get("current_observation"), Observation.class)

让 Gson 来做脏活。

关于java - 在 Java 中从 JSON 文件中检索特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213843/

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