android json从特定网址解析

时间:2014-03-27 13:24:56

标签: android json parsing url

大家好,我是json解析的新手..我有一个链接,但我的应用程序崩溃了 在这一行显示错误

JSONArray earthquakes = json.getJSONArray("wallpaper");

I have follow this link

JSONObject json = JSONfunctions
                .getJSONfromURL("http://myurl.php?category=all&device=all&hits=all");
try {
            JSONArray earthquakes = json.getJSONArray("wallpaper");

            for (int i = 0; i < earthquakes.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject jobject = earthquakes.getJSONObject(i);

                map.put("id", String.valueOf(i));
                map.put("category", "Earthquake name:" + jobject.getString("category"));
                map.put("title",
                        "title:" + jobject.getString("title"));
                mylist.add(map);



            }
        } catch (JSONException e) {
            Log.e("log_tag", "Error Parsing data" + e.toString());
        }

        ListAdapter adapter = new SimpleAdapter(this, mylist,
                R.layout.activity_hd_wallpapers, new String[] { "title",
                        "magnitude" }, new int[] { R.id.item_title,
                        R.id.item_subtitle });

        setListAdapter(adapter);

        final ListView listview = getListView();
        listview.setTextFilterEnabled(true);

    }

这是我的班级     公共类JSONfunctions {

    public static JSONObject getJSONfromURL(String url){
        //initialize
        InputStream Input_Stream = null;
        String result = "";
        JSONObject jArray = null;

        //http post
        try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        Input_Stream = entity.getContent();
        }catch (Exception e) {
        Log.e("log_tag","Error in Http Connection" + e.toString());
        }

        //convert response to string

        try {

        BufferedReader reader = new BufferedReader(new InputStreamReader(Input_Stream,"iso-8859-1"),8);
        StringBuilder String_builder = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null) {
        String_builder.append(line+ "\n");
        }
        Input_Stream.close();
        result = String_builder.toString();

        } catch (Exception e) {
        Log.e("Log_tag","Error Converting result" + e.toString());
        }
        try {
        jArray = new JSONObject(result);

        } catch (JSONException e) {
        Log.e("Log_tag", "Error Parsing Data" + e.toString());
        }
        return jArray;
        }

        }

这是我的 blablabla.php?category = all&amp; device = all&amp; hits = all

"wallpaper":[
      {
         "id":"1173",
         "category":"abstract",
         "title":"155",
         "images":{
            "image_thumb":"http:\/\/urlof.jpg",
            "image1":"http:\/\/url.jpg",
            "image2":"http:\/\/url.jpg",
            "image3":"http:\/\/url.jpg",
            "image4":"url.jpg"
         },
         "hits":"2"
      },
      {
         "id":"1172",
         "category":"abstract",
         "title":"154",
         "images":{
            "image_thumb":"url.jpg",
            "image1":"url.jpg",
            "image2":"url.jpg",
            "image3":"url.jpg",
            "image4":"url.jpg"
         },
         "hits":"0"
      },

但我的logcat说:

3-27 18:55:02.825: W/dalvikvm(17972): threadid=1: thread exiting with uncaught exception (group=0x409e41f8)
03-27 18:55:02.835: E/AndroidRuntime(17972): FATAL EXCEPTION: main
03-27 18:55:02.835: E/AndroidRuntime(17972): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hdwallpapers/com.example.hdwallpapers.HD_Wallpapers}: java.lang.NullPointerException
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.os.Looper.loop(Looper.java:137)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread.main(ActivityThread.java:4424)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at java.lang.reflect.Method.invokeNative(Native Method)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at java.lang.reflect.Method.invoke(Method.java:511)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at dalvik.system.NativeStart.main(Native Method)
03-27 18:55:02.835: E/AndroidRuntime(17972): Caused by: java.lang.NullPointerException
03-27 18:55:02.835: E/AndroidRuntime(17972):    at com.example.hdwallpapers.HD_Wallpapers.onCreate(HD_Wallpapers.java:35)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.Activity.performCreate(Activity.java:4492)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-27 18:55:02.835: E/AndroidRuntime(17972):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)

4 个答案:

答案 0 :(得分:0)

如果你想获得 id ,你必须像这样解析你的JSON:

JSONObject json = new JSONObject(jsonString);
JSONArray jsonArray = json.getJSONArray("wallpaper");

// for example first array element
JSONObject firstArrElement = jsonArray.getJSONObject(0);
String id = firstArrElement.getString("id");

答案 1 :(得分:0)

根据您的JSON壁纸是JSONArray

试试这个

JSONArray wallpaperArray = json.getJSONArray("wallpaper");
for (int i = 0; i < wallpaperArray (); i++) 
{
JSONObject c = wallpaperArray.getJSONObject(i);
String ID = c.getString("id");
}

答案 2 :(得分:0)

最好的tutorial for JSON parsing或关注this video tutorial(150到153)。这可能对您有帮助,因为您是JSON的初学者。

答案 3 :(得分:0)

 down vote


private void Get_List() {
            // TODO Auto-generated method stub
CountDownTimer count_Timer;
            try {
                count_Timer.start();
                SetUrl url = new SetUrl();
                URL myurl = new URL(//"Your URL");
                HttpURLConnection connection = (HttpURLConnection) myurl
                        .openConnection();
                connection.connect();
                int code = connection.getResponseCode();

                if (code != 200) {
                    setContentView(R.layout.webimg);
                    TextView tv_nointernet = (TextView) findViewById(R.id.tv_nointernet);
                    tv_nointernet.setText("Please turn your internet on. . .");
                } else {

                    BufferedReader dis = new BufferedReader(
                            new InputStreamReader(connection.getInputStream()));

                    String myString, Result = dis.readLine();

                    while ((myString = dis.readLine()) != null) {
                        Result += myString;
                    }
                    JSONObject jsonObject = new JSONObject(Result);
                    JSONArray jsonArray = jsonObject.getJSONArray("posts");

                    Rest_List = new ArrayList<Rest_Listing>();

                    for (int i = 0; i < jsonArray.length(); i++) {
                        Rest_Listing R_List = new Rest_Listing();

                        JSONObject O = jsonArray.getJSONObject(i);

                        R_List.setRest_Address1(O.getJSONObject("post")
                                .getString("Name"));


                        Rest_List.add(i, R_List);
                    }
                    count_Timer.cancel();
                }
            } catch (MalformedURLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }