PDA

View Full Version : [Java] Hỏi về cách lấy thuộc tính từ chuỗi Json API của Youtube



luong.minhson
27-10-2016, 10:11
Mình làm 1 ứng dụng nhỏ là load các video của 1 playlist và title của video lên 1 listview trong android. Để khi click vào mỗi items đó thì video sẽ bung ra.

Mình muốn lấy các thuộc tính của chuỗi json như link: https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key=AIzaSyC2fE273wmaEev3NrclEioRyvr8koUY6rk

Mình muốn lấy ra các thuộc tính:


"items":[
{
snippet
{
title,
thumbnails -> default {url, width, height},
resourceId
{
videoId": "yjmp8CoZBIo,
}
}

Đó là các thuộc tính mình muốn lấy trong mỗi item snippet.

Đoạn code để parse của mình như sau:

MainJava. Mình làm chưa ra do mình không biết parse json ở hàm này. Mọi người giúp mình review cái hàm này với ạ.


protected Void doInBackground(Void... params)
{
URL jsonURL;
URLConnection jc;
try
{
jsonURL = new URL("https://www.googleapis.com/youtube/v3/playlistItems…" + "UUbW18JZRgko_mOGm5er8Yzg" + "&key=AIzaSyC2fE273wmaEev3NrclEioRyvr8koUY6rk");
Log.d("aip", ""+jsonURL+"");
jc = jsonURL.openConnection();
InputStream is = jc.getInputStream();
//doc du lieu
BufferedReader reader= new BufferedReader(new InputStreamReader(is,"UTF-8"),8);//iso-8859-1
StringBuilder sb=new StringBuilder();
String line=null;
while((line=reader.readLine())!=null)
{
sb.append(line+"\n");
}
is.close();
String jsonTxt=sb.toString(); //doc StringBuilder vao chuoi
Log.d("jsonTxt length: ", jsonTxt.length() + " dòng.");
Log.d("jsonTxt",""+jsonTxt+"");
JSONObject jj = new JSONObject(jsonTxt);
Log.d("jj",""+jj+"");
JSONObject jdata = jj.getJSONObject("items");
Log.d("jdata",""+jdata+"");
JSONArray aitems = jdata.getJSONArray("snippet");
Log.d("aitems",""+aitems+"");
for (int i=0;i<aitems.length();i++)
{
JSONObject item = aitems.getJSONObject(i);
String title = item.getString("title");
Log.d("item",""+item+"");
Log.d("title",title);
JSONObject video = item.getJSONObject("resourceId");
String link = video.getString("videoId");

JSONObject thumbnail = item.getJSONObject("thumbnails");
String thumbnailUrl = thumbnail.getString("default");
Log.d("url", thumbnailUrl);
Log.d("link", link);
Log.d("title", title);
HashMap<String,String> hashmap=new HashMap<String,String>();
hashmap.put("title",title);
hashmap.put("thumbnailUrl", thumbnailUrl);
//hashmap.put("length",length);
hashmap.put("link",link);
menuitems.add(hashmap);
//lay hinh bo vao mang hinh truoc, khong doi den getView duoc
URL url = new URL(thumbnailUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream ishinh = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(ishinh);
manghinh.add(img);
Log.d("dulieu", title);
Log.d("duongdan",link);
Log.d("hinh",thumbnailUrl);
}
}
catch (Exception e)
{
e.printStackTrace();
Log.d("loi", e.toString());
}
return null;
}


Giúp mình với ạ!!!!!!!!

luong.minhson
31-10-2016, 13:14
Mình đã lấy được các giá trị này. Items là 1 JSONArray, snippet là 1 JSONObject và "title" là 1 thuộc tính trong Object snippet, sau đó thumbnails, resourceId cũng là 1 JSONObject. Lấy theo từng phần như vậy là dc.

AlPacino
05-07-2017, 19:15
Bạn có thể dùng thư viện Jackson rất mạnh để xử lý json trong java

FPT Software
21-09-2017, 06:23
Đó là các thuộc tính mình muốn lấy trong mỗi item snippet.

Đoạn code để parse của mình như sau:

MainJava. Mình làm chưa ra do mình không biết parse json ở hàm này. Mọi người giúp mình review cái hàm này với ạ.