JSONObject jo = (JSONObject) new JSONTokener(IOUtils.toString(new URL("http://gdata.youtube.com/feeds/api/videos/SIFL9qfmu5U?alt=json"))).nextValue();
System.out.println(jo.getString("version"));
public String readJSONFeed(String URL) {
StringBuilder stringBuilder = new StringBuilder();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(URL);
try {
HttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
inputStream.close();
} else {
Log.d("JSON", "Failed to download file");
}
} catch (Exception e) {
Log.d("readJSONFeed", e.getLocalizedMessage());
}
return stringBuilder.toString();
}
然后放置一个任务,然后从JSON中读取所需的值-
private class ReadPlacesFeedTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
return readJSONFeed(urls[0]);
}
protected void onPostExecute(String result) {
JSONObject json;
try {
json = new JSONObject(result);
////CREATE A JSON OBJECT////
JSONObject data = json.getJSONObject("JSON OBJECT NAME");
////GET A STRING////
String title = data.getString("");
//Similarly you can get other types of data
//Replace String to the desired data type like int or boolean etc.
} catch (JSONException e1) {
e1.printStackTrace();
}
//GETTINGS DATA FROM JSON ARRAY//
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray postalCodesItems = new JSONArray(
jsonObject.getString("postalCodes"));
JSONObject postalCodesItem = postalCodesItems
.getJSONObject(1);
} catch (Exception e) {
Log.d("ReadPlacesFeedTask", e.getLocalizedMessage());
}
}
}
8条答案
按热度按时间wvt8vs2t1#
1.首先需要下载URL(文本):
*然后需要解析(这里有一些选项)。
*GSON(完整示例):
输出:
*尝试json.org的java API:
wpcxdonn2#
GSON有一个构建器,它接受一个Reader对象:
fromJson(Reader json, Class<T> classOfT)
。这意味着您可以从URL创建一个Reader,然后将其传递给Gson以使用流并进行反序列化。
只有三行相关代码。
如果你碰巧得到一个403错误代码与一个端点,否则工作正常(例如与
curl
或其他客户端),那么一个可能的原因可能是该端点需要一个User-Agent
头,默认情况下Java URLConnection没有设置它。一个简单的修复方法是在文件的顶部添加,例如System.setProperty("http.agent", "Netscape 1.0");
。Maven依赖
Gradle依赖
kmb7vmvb3#
您可以使用org.apache.commons.io.IOUtils进行下载,使用org.json.JSONTokener进行解析:
qfe3c7zg4#
这里有一个简单的方法。
首先从url解析JSON-
然后放置一个任务,然后从JSON中读取所需的值-
然后你可以像这样放置一个任务-
khbbv19g5#
xcitsw886#
vkc1a9a27#
我使用java1.8和Jackson
Integer.class也可以是一个复杂的类型。只是作为例子使用。
k4emjkb18#
一个简单的替代解决方案: