数组和对象从JSON URL分析 [英] Array and Object JSON from URL Parsing

查看:170
本文介绍了数组和对象从JSON URL分析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在JSON从URL解析新手。昨天我试着解析JSON的简单数据。现在我很困惑,形成一个JSON解析数据如下。我还是不能如何解析数组和对象的JSON。请帮我家伙..

在这里我MainActivity.java

 公共类MainActivity扩展ListActivity {
/ **当第一次创建活动调用。 * /私有静态字符串URL =htt​​p://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_t​​itle =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_t​​itle);
            字符串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_t​​itle,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_t​​itle,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_t​​itle,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆