2012-10-04 52 views
0

我有这样的代码显示来自MySQL的数据,的JSONObject不能转换成JSONArray错误

其读取数据

protected String doInBackground(String... params) { 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
         // Building Parameters 
       // int success; 
        try { 
         // Building Parameters 
         List<NameValuePair> params = new ArrayList<NameValuePair>(); 
         params.add(new BasicNameValuePair("phone", mPhoneNumber)); 
         params.add(new BasicNameValuePair("id_store", id_store)); 

         // getting store details by making HTTP request 
         // Note that store details url will use GET request 
         JSONObject json = jsonParser.makeHttpRequest(Constants.url_store_detail, "GET", params); 

         // check your log for json response 
         Log.d("Single Store Details", json.toString()); 

         // json success tag 

          // successfully received store details 
          JSONArray storeObj = json.getJSONArray("store"); // JSON Array 

          // get first product object from JSON Array 
          JSONObject store = storeObj.getJSONObject(0); 

          // product with this pid found 
          // Edit Text 
          urledit = (EditText) findViewById(R.id.ETurledit); 
          storenameedit = (EditText) findViewById(R.id.ETusernameedit); 
          storedescedit = (EditText) findViewById(R.id.ETdescedit); 
          edittype=(Spinner)findViewById(R.id.Stypeedit); 

          String url = json.getString(TAG_URL); 

          // display store data in EditText 
          urledit.setText(store.getString(TAG_URL)); 
          storenameedit.setText(store.getString(TAG_NAME)); 
          storedescedit.setText(store.getString(TAG_DESC));    

          if(store.getString(TAG_TYPE).equals("1")){ 
           String mine = store.getString("Wordpress"); 
           ArrayAdapter myadap = (ArrayAdapter)edittype.getAdapter(); 

           int spinnerpos = myadap.getPosition(mine); 
           edittype.setSelection(spinnerpos); 

          }else{ 
           String mine = store.getString("Prestashop"); 
           ArrayAdapter myadap = (ArrayAdapter)edittype.getAdapter(); 

           int spinnerpos = myadap.getPosition(mine); 

           edittype.setSelection(spinnerpos); 


          } 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 

      return null; 
     } 

,但它显示出这样的

10-04 13:08:57.377: DEBUG/dalvikvm(306): GC_EXPLICIT freed 42 objects/2008 bytes in 260ms 
10-04 13:08:59.837: INFO/ActivityManager(59): Starting activity: Intent { cmp=shoop3.android.edu/.editstoreActivity (has extras) } 
10-04 13:09:01.148: DEBUG/dalvikvm(1272): GC_FOR_MALLOC freed 1456 objects/269496 bytes in 198ms 
10-04 13:09:01.407: DEBUG/Single Store Details(1272): {"store":{"id_user":"56","id_platform":"2","store_url":"prestashop","store_desc":"dasdasd","id_store":"38","store_logo":null,"store_name":"prestashop","store_curr":null}} 
10-04 13:09:01.427: WARN/System.err(1272): org.json.JSONException: Value {"id_user":"56","id_platform":"2","store_url":"prestashop","store_desc":"dasdasd","id_store":"38","store_logo":null,"store_name":"prestashop","store_curr":null} at store of type org.json.JSONObject cannot be converted to JSONArray 
10-04 13:09:01.457: WARN/System.err(1272):  at org.json.JSON.typeMismatch(JSON.java:96) 
10-04 13:09:01.457: WARN/System.err(1272):  at org.json.JSONObject.getJSONArray(JSONObject.java:548) 
10-04 13:09:01.507: WARN/System.err(1272):  at shoop3.android.edu.editstoreActivity$GetStoreDetails$1.run(editstoreActivity.java:189) 
10-04 13:09:01.507: WARN/System.err(1272):  at android.os.Handler.handleCallback(Handler.java:587) 
10-04 13:09:01.517: WARN/System.err(1272):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-04 13:09:01.517: WARN/System.err(1272):  at android.os.Looper.loop(Looper.java:123) 
10-04 13:09:01.517: WARN/System.err(1272):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-04 13:09:01.528: WARN/System.err(1272):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-04 13:09:01.528: WARN/System.err(1272):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-04 13:09:01.528: WARN/System.err(1272):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-04 13:09:01.537: WARN/System.err(1272):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-04 13:09:01.577: WARN/System.err(1272):  at dalvik.system.NativeStart.main(Native Method) 
10-04 13:09:02.948: INFO/ActivityManager(59): Displayed activity shoop3.android.edu/.editstoreActivity: 3002 ms (total 3002 ms) 

错误如何解决这个?? bcause它显示错误的JSONObject无法转换器JSONArray, 我希望有人能帮助我,感谢乌拉圭回合的建议

+0

JSONArray storeObj = json.getJSONArray( “存储”);商店不是JSONArray。这是Jsonobject。所以你可以改变的JSONObject storeObj = json.getJSONObject( “存储”); – rajeshwaran

+0

很好,谢谢@rajeshwaran :) –

回答

1

通过观察你的日志,使用,而不是这个

JSONObject storeObj = json.getJSONObject("store"); 

JSONArray storeObj = json.getJSONArray("store"); 

因为商店是JSON对象

+0

感谢@ponraj :) –

0
JSONObject json = jsonParser.makeHttpRequest(Constants.url_store_detail, "GET", params); 

您可以看到h ERE JSON是一种JSONObject。这里

JSONArray storeObj = json.getJSONArray("store"); 

JSONObject你正在试图获得JSONArray

,从而代替声明JSON作为JSONObject声明为JSONArray

,然后删除storeObj,直接让您的数据如下

JSONObject store = json.getJSONObject(0); 
+0

感谢@Ashwani :) –

+0

我相信它会在这里解决问题。当它确实不要忘记接受答案。 – Ashwani

相关问题