String sURL = "http://freegeoip.net/json/"; //just a string
// Connect to the URL using java's native library
URL url = new URL(sURL);
URLConnection request = url.openConnection();
request.connect();
// Convert to a JSON object to print data
JsonParser jp = new JsonParser(); //from gson
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); //Convert the input stream to a json element
JsonObject rootobj = root.getAsJsonObject(); //May be an array, may be an object.
String zipcode = rootobj.get("zip_code").getAsString(); //just grab the zipcode
public static String getJSON(String url) {
HttpsURLConnection con = null;
try {
URL u = new URL(url);
con = (HttpsURLConnection) u.openConnection();
con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
return sb.toString();
} catch (MalformedURLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (con != null) {
try {
con.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
return null;
}
像这样使用:
String json = getJSON(url);
JSONObject obj;
try {
obj = new JSONObject(json);
JSONArray results_arr = obj.getJSONArray("results");
final int n = results_arr.length();
for (int i = 0; i < n; ++i) {
// get the place id of each object in JSON (Google Search API)
String place_id = results_arr.getJSONObject(i).getString("place_id");
}
}
ObjectMapper mapper = new ObjectMapper(); // just need one
// Got a Java class that data maps to nicely? If so:
FacebookGraph graph = mapper.readValue(url, FaceBookGraph.class);
// Or: if no class (and don't need one), just map to Map.class:
Map<String,Object> map = mapper.readValue(url, Map.class);
特别是通常(imo)处理java对象的情况,可以用一行代码:
FacebookGraph graph = new ObjectMapper().readValue(url, FaceBookGraph.class);
使用httpclient获取url的内容。然后使用json.org中的库来解析json。我在许多项目中使用过这两个库,它们非常健壮并且使用简单。 除此之外,您可以尝试使用facebook api java库。我在这方面没有任何经验,但在java中使用facebook api时,有一个关于堆栈溢出的问题。您可能希望将restfb视为库使用的一个好选择。
11条答案
按热度按时间zc0qhyus1#
下面是如何解析json内容的完整示例。这个例子以android版本统计数据为例(可以从androidstudio源代码中找到,链接到这里)。
将从那里得到的“distributions.json”文件复制到res/raw中,作为备用。
构建.gradle
显示
主要活动.kt
作为依赖关系的替代方法,您也可以使用以下选项:
以及后备方案:
运行此命令的结果:
dddzy1tm2#
最简单的方法:使用gson,google自己的goto-json库。https://code.google.com/p/google-gson/
这是一个样品。我要去这个免费的地理定位网站,解析json并显示我的zipcode(把这些东西放进一个主要的方法来测试)
vktxenjb3#
我想在这里添加一个更新的答案,因为最近对jdk的更新使得读取httpurl的内容更容易一些。正如其他人所说,您仍然需要使用json库来进行解析,因为jdk当前不包含json库。下面是一些最常用的java json库:
组织.json
fasterxmlJackson
格森
要从url检索json,这似乎是严格使用jdk类的最简单方法(但可能不是您希望对大型有效负载执行的操作),java 9介绍:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/inputstream.html#readallbytes()
例如,使用gson库解析json
ozxc1zmp4#
我发现这是迄今为止最简单的方法。
使用此方法:
像这样使用:
of1yzvn45#
以下是jackson的两个备选版本(因为您可能需要多种方式来获取数据):
特别是通常(imo)处理java对象的情况,可以用一行代码:
其他lib如gson也支持单行方法;为什么许多例子显示更长的部分是奇怪的。更糟糕的是,许多示例使用过时的org.json库;这可能是第一件事,但有六个更好的替代品,所以很少有理由使用它。
djp7away6#
使用jersey客户端非常简单,只需包含以下maven依赖项:
然后使用以下示例调用它:
然后使用google的gson解析json:
yqyhoc1h7#
使用maven工件
org.json:json
我得到了下面的代码,我认为它很短。不尽可能短,但仍然可用。oiopk7p58#
使用httpclient获取url的内容。然后使用json.org中的库来解析json。我在许多项目中使用过这两个库,它们非常健壮并且使用简单。
除此之外,您可以尝试使用facebook api java库。我在这方面没有任何经验,但在java中使用facebook api时,有一个关于堆栈溢出的问题。您可能希望将restfb视为库使用的一个好选择。
yhived7q9#
我不确定这是否有效,但这是可能的方法之一:
从url读取json使用
url.openStream()
将内容读入字符串。用这个字符串构造一个json对象(详见json.org)
wbrvyc0a10#
我已经用最简单的方法完成了json解析器
这个类从url返回json对象
当您需要json对象时,只需调用这个类和活动类中的方法
我的密码在这里
这里的“json键”表示json文件中的键
这是一个简单的json文件示例
这里“json”是键,“hi”是值
这会将json值转换为字符串内容。
at0kjp5o11#
如果您不介意使用几个库,可以在一行中完成。
包括apache commons ioutils和json.org库。