数组和对象从JSON URL分析 [英] Array and Object JSON from URL Parsing
本文介绍了数组和对象从JSON URL分析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在JSON从URL解析新手。昨天我试着解析JSON的简单数据。现在我很困惑,形成一个JSON解析数据如下。我还是不能如何解析数组和对象的JSON。请帮我家伙..
在这里我MainActivity.java
公共类MainActivity扩展ListActivity {
/ **当第一次创建活动调用。 * /私有静态字符串URL =http://api.themoviedb.org/3/genre/18/movies?api_key=d397dd2d354f088c6f0eb91c6b160bb0;// 标签
私有静态最后弦乐TAG_ID =ID;
私有静态最后弦乐TAG_page =页面;
私有静态最后弦乐TAG_results =成果;
私有静态最后弦乐TAG_backdrop_path =backdrop_path;
私有静态最后弦乐TAG_ID =ID;
私有静态最后弦乐TAG_original_title =ORIGINAL_TITLE;
私有静态最后弦乐TAG_release_date =RELEASE_DATE;
私有静态最后弦乐TAG_poster_path =poster_path;
私有静态最后弦乐TAG_title =称号;
私有静态最后弦乐TAG_vote_average =vote_average;
私有静态最后弦乐TAG_vote_count =vote_count;
私有静态最后弦乐TAG_total_pages =TOTAL_PAGES;
私有静态最后弦乐TAG_total_results =TOTAL_RESULTS;
JSONArray结果= NULL;
JSONArray ID =无效;
JSONArray页= NULL;
JSONArray页= NULL;
JSONArray tot_result = NULL;// panggil类解析器
JSONparser分析器=新JSONparser();@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main); ArrayList的<&HashMap的LT;字符串,字符串>> genreList =新的ArrayList<&HashMap的LT;字符串,字符串>>(); JSONObject的JSON = parser.getJSONFromUrl(URL);
尝试{
ID = json.getJSONArray(TAG_ID);
页= json.getJSONArray(TAG_page);
页= json.getJSONArray(TAG_total_pages);
tot_result = json.getJSONArray(TAG_total_results); 的for(int i = 0; I< results.length();我++){
JSONObject的数据= results.getJSONObject(I) 字符串的背景= data.getString(TAG_backdrop_path);
字符串IDD = data.getString(TAG_ID)的ToString();
字符串ORI = data.getString(TAG_original_title);
字符串releas = data.getString(TAG_release_date);
字符串海报= data.getString(TAG_poster_path);
字符串title = data.getString(TAG_title);
串平均= data.getString(TAG_vote_average);
字符串计数= data.getString(TAG_vote_count); HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
map.put(TAG_backdrop_path,背景);
map.put(TAG_ID,IDD);
map.put(TAG_original_title,ORI);
map.put(TAG_release_date,releas);
map.put(TAG_poster_path,海报);
map.put(TAG_title,职称);
map.put(TAG_vote_average,平均值);
map.put(TAG_vote_count,计数); genreList.add(地图);
} // 排序方式
/ **********
* Collections.sort(genreList,新的比较<&HashMap的LT;弦乐,
*字符串>>(){
*
* @覆盖公众诠释比较(HashMap的<字符串,字符串>一种,
* HashMap的<字符串,字符串> B){返回
* a.get(TAG_NAMA).compareTo(b.get(TAG_ID)); }});
************ / }赶上(JSONException E){
// TODO:处理异常
e.printStackTrace();
} // tampilkan科listadapter
ListAdapter适配器=新SimpleAdapter(这一点,genreList,
R.layout.list_data,新的String [] {TAG_ID,TAG_page,
TAG_results,TAG_backdrop_path,TAG_ID,
TAG_original_title,TAG_release_date,TAG_poster_path,
TAG_title,TAG_vote_average,TAG_vote_count,
TAG_total_pages,TAG_total_results},新的INT [] {
R.id.id,R.id.page,R.id.result,R.id.backdrop_path,
R.id.idd,R.id.original_title,R.id.release_date,
R.id.poster_path,R.id.title,R.id.vote_average,
R.id.vote_count,R.id.total_pages,R.id.total_results});
setListAdapter(适配器);
}
}
在这里我JSONparser.java
公共类JSONparser {
静态InputStream为= NULL;
静态的JSONObject jObj = NULL;
静态JSON字符串=;公共JSONparser(){}公众的JSONObject getJSONFromUrl(字符串URL){
// http请求
尝试{ DefaultHttpClient的HttpClient =新DefaultHttpClient();
HTTPGET HTTPGET =新HTTPGET(URL); HTT presponse HTT presponse = httpClient.execute(HTTPGET);
HttpEntity httpEntity = HTT presponse.getEntity();
是= httpEntity.getContent(); }赶上(UnsupportedEncodingException五){
// TODO:处理异常
e.printStackTrace();
}赶上(ClientProtocolException E){
// TODO:处理异常
e.printStackTrace();
}赶上(IOException异常五){
// TODO:处理异常
e.printStackTrace();
} 尝试{
读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
是,UTF-8),8);
StringBuilder的SB =新的StringBuilder();
串线= NULL; 而((行= reader.readLine())!= NULL){
sb.append(行+\\ n);
} is.close();
JSON = sb.toString(); }赶上(例外五){
// TODO:处理异常
Log.e(缓冲区错误,错误转换结果+ e.toString());
} //试图解析字符串到JSON
尝试{
jObj =新的JSONObject(JSON);
}赶上(JSONException E){
// TODO:处理异常
Log.e(JSON解析器,错误分析数据+ e.toString());
} 返回jObj;}}
在这里我的JSON数据。
{
ID:18,
页:1,
结果:
{
backdrop_path:/6xKCYgH16UuwEGAyroLU6p8HLIn.jpg,
ID:238,
ORIGINAL_TITLE:教父,
RELEASE_DATE:1972年3月24日
poster_path:/d4KNaTrltq6bpkFS01pYtyXa09m.jpg,
头衔:教父,
vote_average:9.1999999999999993,
vote_count:125
},
{
backdrop_path:/ooqPNPS2WdBH7DgIF4em9e0nEld.jpg,
ID:857,
ORIGINAL_TITLE:拯救大兵瑞恩,
RELEASE_DATE:1998年7月24日
poster_path:/35CMz4t7PuUiQqt5h4u5nbrXZlF.jpg,
头衔:拯救大兵瑞恩,
vote_average:8.9000000000000004,
vote_count:83
}
]
TOTAL_PAGES:25,
TOTAL_RESULTS:499
}
解决方案
试试这个..
在您的全球
JSONArray结果= NULL;
字符串ID = NULL;
字符串页面= NULL;
字符串页= NULL;
字符串tot_result = NULL;
在尝试捕捉
JSONObject的JSON = parser.getJSONFromUrl(URL);
尝试{
ID = json.getString(TAG_ID); //这里的变化
页= json.getString(TAG_page); //这里的变化 页= json.getString(TAG_total_pages); //这里的变化 tot_result = json.getString(TAG_total_results); //这里的变化 结果= json.getJSONArray(TAG_results); //添加此行 的for(int i = 0; I< results.length();我++){
//剩余正确
}
编辑:
新DownloadImageTask()
.execute(图像URL);
}
和 DownloadImageTask.class
私有类DownloadImageTask扩展的AsyncTask<弦乐,太虚,位图> { 保护位图doInBackground(字符串的URL ...){
字符串urldisplay =网址[0];
位图mIcon11 = NULL;
尝试{
在的InputStream =新的java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.de codeStream(中);
}赶上(例外五){
Log.e(错误,e.getMessage());
e.printStackTrace();
}
返回mIcon11;
} 保护无效onPostExecute(位图结果){
imageview.setImageBitmap(结果);
}
}
I was a novice at the json parsing from url. yesterday I've tried parsing json simple data. Now I am confused to form a json parsing the data as below. I still can not how to parse arrays and objects in json. Please help me guys ..
here my MainActivity.java
public class MainActivity extends ListActivity {
/** Called when the activity is first created. */
private static String URL = "http://api.themoviedb.org/3/genre/18/movies?api_key=d397dd2d354f088c6f0eb91c6b160bb0";
// tag
private static final String TAG_ID = "id";
private static final String TAG_page = "page";
private static final String TAG_results = "results";
private static final String TAG_backdrop_path = "backdrop_path";
private static final String TAG_id = "id";
private static final String TAG_original_title = "original_title";
private static final String TAG_release_date = "release_date";
private static final String TAG_poster_path = "poster_path";
private static final String TAG_title = "title";
private static final String TAG_vote_average = "vote_average";
private static final String TAG_vote_count = "vote_count";
private static final String TAG_total_pages = "total_pages";
private static final String TAG_total_results = "total_results";
JSONArray results = null;
JSONArray id = null;
JSONArray page = null;
JSONArray pages = null;
JSONArray tot_result = null;
// panggil class parser
JSONparser parser = new JSONparser();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> genreList = new ArrayList<HashMap<String, String>>();
JSONObject json = parser.getJSONFromUrl(URL);
try {
id = json.getJSONArray(TAG_ID);
page = json.getJSONArray(TAG_page);
pages = json.getJSONArray(TAG_total_pages);
tot_result = json.getJSONArray(TAG_total_results);
for (int i = 0; i < results.length(); i++) {
JSONObject data = results.getJSONObject(i);
String backdrop = data.getString(TAG_backdrop_path);
String idd = data.getString(TAG_id).toString();
String ori = data.getString(TAG_original_title);
String releas = data.getString(TAG_release_date);
String poster = data.getString(TAG_poster_path);
String title = data.getString(TAG_title);
String average = data.getString(TAG_vote_average);
String count = data.getString(TAG_vote_count);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_backdrop_path, backdrop);
map.put(TAG_ID, idd);
map.put(TAG_original_title, ori);
map.put(TAG_release_date, releas);
map.put(TAG_poster_path, poster);
map.put(TAG_title, title);
map.put(TAG_vote_average, average);
map.put(TAG_vote_count, count);
genreList.add(map);
}
// Sort by
/*********************************
* Collections.sort(genreList, new Comparator<HashMap<String,
* String>>() {
*
* @Override public int compare(HashMap<String, String> a,
* HashMap<String, String> b) { return
* a.get(TAG_NAMA).compareTo(b.get(TAG_ID)); } });
******************************/
} catch (JSONException e) {
// TODO: handle exception
e.printStackTrace();
}
// tampilkan ke listadapter
ListAdapter adapter = new SimpleAdapter(this, genreList,
R.layout.list_data, new String[] { TAG_ID, TAG_page,
TAG_results, TAG_backdrop_path, TAG_id,
TAG_original_title, TAG_release_date, TAG_poster_path,
TAG_title, TAG_vote_average, TAG_vote_count,
TAG_total_pages, TAG_total_results }, new int[] {
R.id.id, R.id.page, R.id.result, R.id.backdrop_path,
R.id.idd, R.id.original_title, R.id.release_date,
R.id.poster_path, R.id.title, R.id.vote_average,
R.id.vote_count, R.id.total_pages, R.id.total_results });
setListAdapter(adapter);
}
}
here my JSONparser.java
public class JSONparser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONparser() {
}
public JSONObject getJSONFromUrl(String url) {
// http request
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
// TODO: handle exception
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "utf-8"), 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) {
// TODO: handle exception
Log.e("BUffer Error", "Error converting result" + e.toString());
}
// try parse string to a json
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
// TODO: handle exception
Log.e("Json parser", "error parsing data" + e.toString());
}
return jObj;
}
}
here my json data.
{
"id": 18,
"page": 1,
"results": [
{
"backdrop_path": "/6xKCYgH16UuwEGAyroLU6p8HLIn.jpg",
"id": 238,
"original_title": "The Godfather",
"release_date": "1972-03-24",
"poster_path": "/d4KNaTrltq6bpkFS01pYtyXa09m.jpg",
"title": "The Godfather",
"vote_average": 9.1999999999999993,
"vote_count": 125
},
{
"backdrop_path": "/ooqPNPS2WdBH7DgIF4em9e0nEld.jpg",
"id": 857,
"original_title": "Saving Private Ryan",
"release_date": "1998-07-24",
"poster_path": "/35CMz4t7PuUiQqt5h4u5nbrXZlF.jpg",
"title": "Saving Private Ryan",
"vote_average": 8.9000000000000004,
"vote_count": 83
}
],
"total_pages": 25,
"total_results": 499
}
解决方案
Try this..
In your Global:
JSONArray results = null;
String id = null;
String page = null;
String pages = null;
String tot_result = null;
Inside Try Catch:
JSONObject json = parser.getJSONFromUrl(URL);
try {
id = json.getString(TAG_ID); // Changes here
page = json.getString(TAG_page); // Changes here
pages = json.getString(TAG_total_pages); // Changes here
tot_result = json.getString(TAG_total_results); // Changes here
results = json.getJSONArray(TAG_results); // Add this line
for (int i = 0; i < results.length(); i++) {
// Remaining all correct
}
EDIT:
new DownloadImageTask()
.execute("your image url");
}
and DownloadImageTask.class
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
imageview.setImageBitmap(result);
}
}
这篇关于数组和对象从JSON URL分析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文