#java #json #youtube-api
#java #json #youtube-api
Вопрос:
У меня есть URL: https://gdata .youtube.com/feeds/api/users/charlieissocoollike/uploads?alt=jsoncamp;v=2 который предоставляет информацию в формате JSON о последних загрузках на YouTube от пользователя.
Я написал некоторый код для анализа этих данных JSON, но я не понимаю, как работает JSON и как его анализировать на Java.
public void getVideoData() throws ClientProtocolException, JSONException, IOException {
JSONObject object = (JSONObject) new JSONTokener(getVideoJSON().toString()).nextValue();
//String query = object.getString("data");
JSONArray locations = object.getJSONArray("data");
output.setText(locations.getString(1));
}
public JSONObject getVideoJSON () throws ClientProtocolException, IOException, JSONException {
final String URL = "https://gdata.youtube.com/feeds/api/users/charlieissocoollike/uploads?alt=jsoncamp;v=2";
StringBuilder url = new StringBuilder(URL);
HttpGet get = new HttpGet(url.toString());
HttpResponse r = client.execute(get);
int status = r.getStatusLine().getStatusCode();
HttpEntity e = r.getEntity();
String data = EntityUtils.toString(e);
JSONArray VideoData = new JSONArray(data);
JSONObject video = VideoData.getJSONObject(0);
return video;
}
Как я должен извлекать идентификатор видео, заголовок и описание из данных JSON каждого видеообъекта?
Ответ №1:
В http://www.json.org / имеет синтаксический анализатор, реализованный на JAVA.
Комментарии:
1. Вы прочитали вопрос и код? OP уже использует его. Он только не знает, как именно извлечь свойства, используя этот анализатор JSON. Кроме того, «Java» не является аббревиатурой, поэтому, пожалуйста, не выкрикивайте это 🙂
Ответ №2:
Вы почти на месте. Что вам нужно, так это:
JSONObject json = new JSONObject(data);
JSONObject dataObject = json.getJSONObject("data"); // this is the "data": { } part
JSONArray items = dataObject.getJSONArray("items"); // this is the "items: [ ] part
Затем вы можете просматривать каждое видео:
for (int i = 0; i < items.length(); i ) {
JSONObject videoObject = items.getJSONObject(i);
String title = videoObject.getString("title");
String videoId = videoObject.getString("id");
}
Комментарии:
1. Спасибо за ответ, но могу ли я вставить этот код в метод getVideoJSON, сделать его недействительным и удалить метод getVideoData ?
2. Это зависит от того, что вы хотите с этим сделать. Я не знаю, что вы пытаетесь сделать с данными, но этот код должен дать вам общее представление о том, как получить заголовок и идентификатор каждого видео (и многое другое) из всех результатов видео.
Ответ №3:
Вам было бы лучше использовать официальную клиентскую библиотеку: http://code.google.com/apis/youtube/2.0/developers_guide_java.html#Retrieving_user_activity_feeds
Комментарии:
1. Я пытался использовать клиентские библиотеки, но постоянно получаю ошибку проверки в com.google.gdata.client.media. Медиасервисы ? И понятия не имею, что не так?