Med*_*ros 0 parsing android json flickr
我想从这个URL解析JSON(http://api.flickr.com/services/feeds/photos_public.gne?format=json),但该文档实际上返回了一个无效的JSON.看到
jsonFlickrFeed({
"title": "Uploads from everyone",
"link": "http://www.flickr.com/photos/",
"description": "",
"modified": "2012-11-26T18:27:41Z",
"generator": "http://www.flickr.com/",
"items": [
{
"title": "2012 Thanksgiving Holiday Weekend",
"link": "http://www.flickr.com/photos/agape_boarding_school/8220697785/",
"media": {"m":"http://farm9.staticflickr.com/8478/8220697785_bb298ac5b3_m.jpg"},
"date_taken": "2012-11-24T14:19:21-08:00",
"description": " <p><a href=\"http://www.flickr.com/people/agape_boarding_school/\">Agape Boarding School<\/a> posted a photo:<\/p> <p><a href=\"http://www.flickr.com/photos/agape_boarding_school/8220697785/\" title=\"2012 Thanksgiving Holiday Weekend\"><img src=\"http://farm9.staticflickr.com/8478/8220697785_bb298ac5b3_m.jpg\" width=\"240\" height=\"159\" alt=\"2012 Thanksgiving Holiday Weekend\" /><\/a><\/p> <p>Great Day at Agape Boarding School<\/p>",
"published": "2012-11-26T18:27:41Z",
"author": "nobody@flickr.com (Agape Boarding School)",
"author_id": "36563683@N07",
"tags": "school boarding agape"
}, ...
Run Code Online (Sandbox Code Playgroud)
我想让我的解析器尽可能通用,那么更好的方法是删除"jsonFlickrFeed"(文档的一部分,只用它自己的JSON?
public class JSONParser extends AsyncTask <String, Void, JSONObject> {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
@Override
protected JSONObject doInBackground(String... params) {
String url=params[0];
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
Run Code Online (Sandbox Code Playgroud)
}
Hir*_*tel 10
我已经通过给定的方式解决了这个问题.
Flickr旧的Web API是:http://api.flickr.com/services/feeds/photos_public.gne?id = xxxxxxxxx&lang = en-us&format = json
Flickr最新的Web API是:http://api.flickr.com/services/feeds/photos_public.gne?id = xxxxxxx&lang = en-us&format = json&nojsoncallback = 1
使用最新的一个Web API.
替换您的用户ID而不是xxxxxxxx.
希望它对你有所帮助.
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |