jsonObject无法转换为json数组类型不匹配

时间:2015-03-28 05:48:12

标签: java android json rest

Json问题。我得到了一个响应,它显示在logcat中,但它说jsonObject不能转换为jsonArray。类型未命中。我是json方面的新手。所以请帮助我。

Json问题。我得到了一个响应,它显示在logcat中,但它说jsonObject不能转换为jsonArray。类型未命中。我是json方面的新手。所以请帮助我。

 public class MainActivity extends Activity implements OnItemClickListener {
String pass;
String url = "http://pixel2share.com/quotesapp/webservices/getallcat.php/";

// JSON Node names
private static final String TAG_CATEGORIES = "response";
private static final String TAG_CATNAME = "catname";
private static final String TAG_CATID = "catid";
JSONArray categories = null;

ArrayList<String> catlist = new ArrayList<String>();

ListView list;

// String[] itemname ={
// "Good morning",
// "Good evening",
// "Funny",
// "Motivation"
// };

  @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_list);

    // CustomListAdapter adapter=new CustomListAdapter(this, itemname);
    // list=(ListView)findViewById(R.id.listView1);
    // list.setAdapter(adapter);
    // list.setOnItemClickListener(this);

    new GetCategories().execute();

    System.out.println("11111111111111111111111111111111111");

   }

    @Override
   public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    // TODO Auto-generated method stub

    // switch(position){
    //
    // case 0:
    // Intent intent=new Intent(getApplicationContext(),SecondScreen.class);
    // pass=String.valueOf(position);
    // intent.putExtra("pass", pass);
    // startActivity(intent);
    // overridePendingTransition
     (R.anim.slide_in_left,R.anim.slide_in_right);
    // break;
    // case 1:
    // Intent intent1=new Intent(getApplicationContext(),GoodEvening.class);
    // pass=String.valueOf(position);
    // intent1.putExtra("pass", pass);
    // startActivity(intent1);
    // overridePendingTransition(R.anim.left,R.anim.right);
    // Toast.makeText(getApplicationContext(), String.valueOf(position),
    // Toast.LENGTH_SHORT).show();
    // break;
    // case 2:
    // Intent intent2=new Intent(getApplicationContext(),Funny.class);
    // pass=String.valueOf(position);
    // intent2.putExtra("pass", pass);
    // startActivity(intent2);
    //     overridePendingTransition
         (R.anim.slide_out_left,R.anim.slide_out_right);
    // Toast.makeText(getApplicationContext(), String.valueOf(position),
    // Toast.LENGTH_SHORT).show();
    // break;
    // case 3:
    // Intent intent3=new Intent(getApplicationContext(),Motivation.class);
    // pass=String.valueOf(position);
    // intent3.putExtra("pass", pass);
    // startActivity(intent3);
    // overridePendingTransition(R.anim.flip_left_in,R.anim.flip_left_out);
    // Toast.makeText(getApplicationContext(), String.valueOf(position),
    // Toast.LENGTH_SHORT).show();
    // break;
    // }

}

// ///////////////////////////////////JSON
// CALL//////////////////////////////////////////////////

private class GetCategories extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        System.out.println("22222222222222222222222222222222222222222222");

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
        ServiceHandler sh = new ServiceHandler();
        System.out.println("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
        System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC");

        Log.d("Response: ", "> " + jsonStr);
        System.out.println("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");

        if (jsonStr != null) {
            System.out.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                System.out.println(jsonObj);

                // Getting JSON Array node
                categories = jsonObj.getJSONArray(TAG_CATEGORIES);

                     System.out.
                     println("33333333333333333333333333333333333333333");

                // looping through All Contacts
                for (int i = 0; i < categories.length(); i++) {
                    JSONObject c = categories.getJSONObject(i);




                    // String id = c.getString(TAG_CATID);
                    String name = c.getString(TAG_CATNAME);
                    System.out
                            .println("5555555555555555555555555555555555");
                    System.out
                            .println("5555555555555555555555555555555555");
                    System.out
                            .println("5555555555555555555555555555555555");
                    // System.out.println(id);
                    System.out.println(name);
                    catlist.add(name);
                    // String email = c.getString(TAG_EMAIL);
                    // String address = c.getString(TAG_ADDRESS);
                    // String gender = c.getString(TAG_GENDER);

                    // // Phone node is JSON Object
                    // JSONObject phone = c.getJSONObject(TAG_PHONE);
                    // String mobile = phone.getString(TAG_PHONE_MOBILE);
                    // String home = phone.getString(TAG_PHONE_HOME);
                    // String office = phone.getString(TAG_PHONE_OFFICE);

                    // tmp hashmap for single contact
                    // String cat = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    // contact.put(TAG_ID, id);
                    // cat.put(TAG_CATNAME, name);
                    // contact.put(TAG_EMAIL, email);
                    // contact.put(TAG_PHONE_MOBILE, mobile);

                    // adding contact to contact list
                    // catlist.add(cat);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        // if (pDialog.isShowing())
        // pDialog.dismiss();
        // /**
        // * Updating parsed JSON data into ListView
        // * */
        // ListAdapter adapter = new SimpleAdapter(
        // MainActivity.this, contactList,
        // R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL,
        // TAG_PHONE_MOBILE }, new int[] { R.id.name,
        // R.id.email, R.id.mobile });

        // setListAdapter(adapter);
    }

}

}

2 个答案:

答案 0 :(得分:1)

试试这种方式

categories =(JSONArray)jsonObj.get("TAG_CATEGORIES");

而不是

 // Getting JSON Array node
categories = jsonObj.getJSONArray(TAG_CATEGORIES);

答案 1 :(得分:0)

我认为您的json是这样的,您可以获得如下数据:

JSONObject jsonObject = new JSONObject(responseString);

        JSONObject data_json = jsonObject.getJSONObject(“response”);

            status = data_json.getBoolean("Success");

          JSONArray itemInfo = data_json.getJSONArray("items");
           {
                      for (int i = 0; i < itemInfo.length(); i++) {
                        //Do your logic Here

                }
            }