[英]JSON optString does not get the picture url
The obj.optString("picture") does not seem to get the picture url .jpeg as a string. obj.optString("picture") 似乎没有将图片 url .jpeg 作为字符串获取。
public static List<Photo> getPictures(AuthProvider provider, String source, String type) {
List<Photo> photos = new LinkedList<Photo>();
if (provider.getProviderId() == Constants.FACEBOOK) {
final String BASE_URL_FACEBOOK = "https://graph.facebook.com/";
String url = BASE_URL_FACEBOOK + source + "/feed";
try {
Response response = provider.api(url, MethodType.GET.toString(), null, null, null);
Log.d("AndroidAppPhotoUtil", "Status " + response.getStatus() + " returned by facebook get query " + url);
if (response.getStatus() == 200) {
String respStr = response.getResponseBodyAsString(Constants.ENCODING);
JSONObject resp = new JSONObject(respStr);
JSONArray data = resp.optJSONArray("data");
if (data != null)
for (int i = 0; i < data.length(); i++) {
JSONObject obj = data.getJSONObject(i);
Photo p = new Photo();
p.setId(obj.optString("id"));
p.setPicture(obj.optString("picture"));
if (isEmpty(type) || type.equals(obj.optString("type"))) {
photos.add(p);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return photos;
}
. .
"id": "466138393436802_466165356767439",
"from": {
"name": "Dimitri Nicolopoulos",
"id": "100004358376630"
},
"to": {
"data": [
{
"name": "My Test Event",
"start_time": "2012-11-13",
"location": "Saewrreritvh",
"id": "466138393436802"
}
]
},
"picture": "http://photos-a.ak.fbcdn.net/hphotos-ak-ash3/533694_123231957832083_231056016_s.jpg",
"link": "http://www.facebook.com/photo.php?fbid=123231957832083&set=oa.160219667456793&type=1&relevant_count=1",
"icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif",
I added put your JSON code inside a '{' and a '}' and I did this:我添加了把你的 JSON 代码放在一个 '{' 和一个 '}' 中,我这样做了:
String respStr = "{\"id\":\"466138393436802_466165356767439\",\"from\":{\"name\":\"Dimitri Nicolopoulos\",\"id\":\"100004358376630\"},\"to\":{\"data\":[{\"name\":\"My Test Event\",\"start_time\":\"2012-11-13\",\"location\":\"Saewrreritvh\",\"id\":\"466138393436802\"}]},\"picture\":\"http://photos-a.ak.fbcdn.net/hphotos-ak-ash3/533694_123231957832083_231056016_s.jpg\",\"link\":\"http://www.facebook.com/photo.php?fbid=123231957832083&set=oa.160219667456793&type=1&relevant_count=1\",\"icon\":\"http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif\"}";
JSONObject resp = new JSONObject(respStr);
System.out.println(resp.get("picture"));
This works.这有效。 Also, your data is always null.此外,您的数据始终为空。 The "data" is actually under the "to" key. “数据”实际上在“to”键下。 So you can do所以你可以做
String respStr = "{\"id\":\"466138393436802_466165356767439\",\"from\":{\"name\":\"Dimitri Nicolopoulos\",\"id\":\"100004358376630\"},\"to\":{\"data\":[{\"name\":\"My Test Event\",\"start_time\":\"2012-11-13\",\"location\":\"Saewrreritvh\",\"id\":\"466138393436802\"}]},\"picture\":\"http://photos-a.ak.fbcdn.net/hphotos-ak-ash3/533694_123231957832083_231056016_s.jpg\",\"link\":\"http://www.facebook.com/photo.php?fbid=123231957832083&set=oa.160219667456793&type=1&relevant_count=1\",\"icon\":\"http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif\"}";
JSONObject resp = new JSONObject(respStr);
JSONObject data = (JSONObject) resp.getJSONObject("to").getJSONArray("data").get(0);
System.out.println(data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.