2014-02-22 2 views
0

내가 JSON의 exception.error 같은 것입니다 받고 있어요 : - 나는데이터를 파싱하는 중 오류가 발생했습니다. org.json.jsonexception : i >> 값? 유형 java.lang.String의는 JSON 객체로 변환 할 수 없습니다

02-22 10:25:16.911: E/JSON Parser(7827): Error parsing data org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject 
    02-22 10:25:16.911: W/dalvikvm(7827): threadid=11: thread exiting with uncaught exception (group=0x41856438) 
    02-22 10:25:16.921: E/AndroidRuntime(7827): FATAL EXCEPTION: AsyncTask #1 
    02-22 10:25:16.921: E/AndroidRuntime(7827): java.lang.RuntimeException: An error occured while executing doInBackground() 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.lang.Thread.run(Thread.java:856) 
    02-22 10:25:16.921: E/AndroidRuntime(7827): Caused by: java.lang.NullPointerException 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at info.androidhive.tabsswipe.Party$LoadParties.doInBackground(Party.java:150) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at info.androidhive.tabsswipe.Party$LoadParties.doInBackground(Party.java:1) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    02-22 10:25:16.921: E/AndroidRuntime(7827):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
을 얻고있다
package info.androidhive.tabsswipe; 

    import java.util.ArrayList; 
    import java.util.HashMap; 
    import java.util.List; 
    import org.apache.http.NameValuePair; 
    import org.json.JSONArray; 
    import org.json.JSONException; 
    import org.json.JSONObject; 
    import android.app.ListActivity; 
    import android.app.ProgressDialog; 
    import android.content.Intent; 
    import android.graphics.drawable.Drawable; 
    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.os.StrictMode; 
    import android.util.Log; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.ListAdapter; 
    import android.widget.ListView; 
    import android.widget.SimpleAdapter; 
    import android.widget.TextView; 

    public class Party extends ListActivity { 



     private ProgressDialog pDialog; 

     // Creating JSON Parser object 
     JSONParser jParser = new JSONParser(); 

     ArrayList<HashMap<String, String>> partyList; 

     // url to get all products list 
     private static String url = "http://192.168.1.6/politiciansnpolitics/appphp/parties.php" ; 

     // JSON Node names 
     private static final String TAG_SUCCESS = "success"; 
     private static final String TAG_PARTY = "party"; 
     private static final String TAG_ID = "party_id"; 
     private static final String TAG_NAME = "party_name"; 


     // products JSONArray 
     JSONArray party = null; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_party); 


      Drawable rightArrow = getResources().getDrawable(R.drawable.worldmap2); 


      // setting the opacity (alpha) 
      rightArrow.setAlpha(100); 
      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
       .detectDiskReads().detectDiskWrites().detectNetwork() // StrictMode is most commonly used to catch accidental disk or network access on the application's main thread 
       .penaltyLog().build()); 


      // Hashmap for ListView 
      partyList = new ArrayList<HashMap<String, String>>(); 

      // Loading products in Background Thread 
      new LoadParties().execute(); 

      // Get listview 
      ListView lv = getListView(); 

      // on seleting single product 
      // launching Edit Product Screen 
      lv.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        // getting values from selected ListItem 
        String party_id = ((TextView) view.findViewById(R.id.id)).getText().toString(); 

        // Starting new intent 
        Intent in = new Intent(getApplicationContext(),Party_Desc.class); 
        // sending pid to next activity 
        in.putExtra(TAG_ID, party_id); 

        // starting new activity and expecting some response back 
        startActivityForResult(in, 100); 
       } 
      }); 

     } 
     @Override 
     public void onPause() { 
     super.onPause(); 
      if(pDialog != null){ 
       pDialog.dismiss(); 
      } 
     } 

     // Response from Edit Product Activity 
     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      // if result code 100 
      if (resultCode == 100) { 
       // if result code 100 is received 
       // means user edited/deleted product 
       // reload this screen again 
       Intent intent = getIntent(); 
       finish(); 
       startActivity(intent); 
      } 

     } 

     /** 
     * Background Async Task to Load all product by making HTTP Request 
     * */ 
     class LoadParties extends AsyncTask<String, String, String> { 

      /** 
      * Before starting background thread Show Progress Dialog 
      * */ 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(Party.this); 
       pDialog.setMessage("Loading parties. Please wait..."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(false); 
       pDialog.show(); 
      } 

      /** 
      * getting All products from url 
      * */ 
      protected String doInBackground(String... args) { 
       // Building Parameters 


       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       // getting JSON string from URL 
       JSONObject json = jParser.makeHttpRequest(url, "GET", params); 

       // Check your log cat for JSON reponse 
       Log.d("All Products: ", json.toString()); 

       try { 
        // Checking for SUCCESS TAG 
        int success = json.getInt(TAG_SUCCESS); 

        if (success == 1) { 
         // products found 
         // Getting Array of Products 
         party = json.getJSONArray(TAG_PARTY); 

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

          // Storing each json item in variable 
          String id = c.getString(TAG_ID); 
          String name = c.getString(TAG_NAME); 

          // creating new HashMap 
          HashMap<String, String> map = new HashMap<String, String>(); 

          // adding each child node to HashMap <span class="vf7210h94y" id="vf7210h94y_22">key</span> => value 
          map.put(TAG_ID, id); 
          map.put(TAG_NAME, name); 

          // adding HashList to ArrayList 
          partyList.add(map); 
         } 
        } else { 
         // no products found 
         // Launch Add New product Activity 
         Intent i = new Intent(getApplicationContext(),TopRatedFragment.class); 
         // Closing all previous activities 
         i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(i); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       return null; 
      } 

      /** 
      * After completing background task Dismiss the progress dialog 
      * **/ 
      protected void onPostExecute(String file_url) { 

       // dismiss the dialog after getting all products 
       pDialog.dismiss(); 
       // updating UI from Background Thread 
       runOnUiThread(new Runnable() { 
        public void run() { 
         /** 
         * Updating parsed JSON data into ListView 
         * */ 
         ListAdapter adapter = new SimpleAdapter(Party.this,partyList,R.layout.list_item, new String[] { TAG_ID, 
             TAG_NAME}, 
           new int[] { R.id.id, R.id.name }); 
         // updating listview 
         setListAdapter(adapter); 
        } 
       }); 

      } 

     } 
    } 

예외

처럼

코드입니다

어제 괜찮 았어. 문제가 발생했다.

+0

파티 클래스 –

+0

Log.d ("모든 제품 :", json.toString()); – user3336646

+0

당신의'json'이 null 인 것 같아요. –

답변

0

api에서 나쁜/null 응답을받는 중, Value  of type 우리는 ird 문자가 구문 분석되고 API 오류를 확인하려고하는 첫 번째 문제입니다.

+0

여기에서 내가 뉴비를 확인하는 방법 – user3336646

+0

DoInBackGround의 List params에 대한 중단 점을 추가하고 디버그 모드에서 앱을 실행하고 null 값의 위치를 ​​확인하여 코드를 단계별로 실행할 수 있습니다. –

관련 문제