【发布时间】:2020-12-24 23:57:38
【问题描述】:
这是我的代码,我可以得到像状态这样的字符串,但是例如“代理”我不能,因为它在“8.8.8.8”之内,我的问题是,我怎样才能用 GSON 获得“代理”的值.
{
"status": "ok",
"8.8.8.8": {
"asn": "AS15169",
"provider": "Google LLC",
"continent": "North America",
"country": "United States",
"isocode": "US",
"latitude": 37.751,
"longitude": -97.822,
"proxy": "no",
"type": "Business"
}
}
public static void main(String[] args) {
URL url = null;
try {
url = new URL("https://proxycheck.io/v2/8.8.8.8?vpn=1&asn=1&tag=proxycheck.io");
URLConnection request = url.openConnection();
request.connect();
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
System.out.println(root);
JsonObject rootobj = root.getAsJsonObject();
JsonElement proxy = rootobj.get("8.8.8.8");
System.out.println(proxy);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
我相信您需要创建一个具有相同字段的自定义对象(实例字段名称必须与我相信的键相同),并且您可以将对象的类传递给 GSON,它解析并返回提供的对象
-
如果您只想从
8.8.8.8对象中选择一个值,那么您可以深入研究该对象。从您现有的rootobj开始,您可以使用:String proxy = rootobj.get("8.8.8.8").getAsJsonObject().get("proxy").getAsString();。话虽如此,我同意@Sal 的观点,即创建反映 JSON 形状的 POJO 通常会更好。这样您就可以更轻松地访问任何 POJO 属性。