2014-03-30 158 views
0

我试图显示一旦他/她登录,每个学生在listview中采取的主题。我使用共享首选项从登录页面中引导用户。 JSONParser有错吗?JSONException:java.lang.Integer无法转换为JSONObject`

logcat错误。

03-30 18:02:26.457: I/System.out(28204): Response : User Found 
    03-30 18:02:26.715: D/Response:(28204): 123{"success":1,"student": [{"matrix_id":"123","ic_no":"123","name":"ALI","email":"[email protected]"}]} 
    03-30 18:02:26.723: W/System.err(28204): org.json.JSONException: Value 123 of type java.lang.Integer cannot be converted to JSONObject 
    03-30 18:02:26.731: W/System.err(28204):  at org.json.JSON.typeMismatch(JSON.java:111) 
    03-30 18:02:26.731: W/System.err(28204):  at org.json.JSONObject.<init>(JSONObject.java:158) 
    03-30 18:02:26.731: W/System.err(28204):  at org.json.JSONObject.<init>(JSONObject.java:171) 
    03-30 18:02:26.731: W/System.err(28204):  at com.ultra.esc.ScheduleFragment$LoadAllSubject.doInBackground(ScheduleFragment.java:146) 
    03-30 18:02:26.731: W/System.err(28204):  at com.ultra.esc.ScheduleFragment$LoadAllSubject.doInBackground(ScheduleFragment.java:1) 
    03-30 18:02:26.731: W/System.err(28204):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    03-30 18:02:26.731: W/System.err(28204): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
    03-30 18:02:26.731: W/System.err(28204): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
    03-30 18:02:26.731: W/System.err(28204): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
    03-30 18:02:26.731: W/System.err(28204): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
03-30 18:02:26.731: W/System.err(28204): at java.lang.Thread.run(Thread.java:856) 

这是在登录后显示的验证码。

//Bring the value from login page---------------------------------------------- 
    SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, 0); 
    matrix_id = settings.getString("matrix",""); 

    TextView matrix = (TextView)rootView.findViewById(R.id.textMatrix);  
    matrix.setText(settings.getString("matrix", "XXXXX")); 

将值传递给JSON代码。

//protected String doInBackground(String... args) { 

     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 

     // post matrix_id as GET parameters 
     params.add(new BasicNameValuePair("matrix_id", matrix_id)); 

     // getting JSON string from URL 
     String json = jsonParser.makeHttpRequest(url_all_subjects, "GET", params); 

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

     try { 
      JSONObject jObj = new JSONObject(json); 

      if(jObj != null){ 
       String matrix_id = jObj.getString(TAG_MATRIX_ID); 
       subject = jObj.getJSONArray(TAG_SUCCESS); 

       if (subject != null) { 
       // looping through All Subjects 
       for (int i = 0; i < subject.length(); i++) { 
        JSONObject c = subject.getJSONObject(i); 

        // Storing each json item in variable 
        String subject = c.getString(TAG_SUBJECT); 

        // creating new HashMap 
        HashMap<String, String> map = new HashMap<String, String>(); 
        map.put("matrix_id", matrix_id); 
        map.put(TAG_SUBJECT, subject); 

        // adding HashList to ArrayList 
        subjectList.add(map); 
       } 
      } 
     } 
     else 
     { Log.d("Subjects: ", "null");} 

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

     return null; 
    } 

    protected void onPostExecute(String file_url) { 
     super.onPostExecute(file_url); 
     // dismiss the dialog after getting all products 
     pDialog.dismiss(); 
     // updating UI from Background Thread   
       ListAdapter adapter = new SimpleAdapter(
          getActivity(), subjectList, 
         R.layout.all_subject, new String[] {TAG_MATRIX_ID,TAG_SUBJECT}, 
         new int[] { R.id.matrix_id, R.id.name }); 
       // updating listview 
       myListView.setAdapter(adapter); 
    } 
+0

请张贴所有logcat的错误,是的,它是在解析 –

+0

@shayanpourvatan我张贴的logcat错误 – Dendi

+0

'123 { “成功”:1, “学生”:[{ “matrix_id”:“123”,“ic_no”:“123”,“name”:“ALI”,“email”:“[email protected]”}]}':是最初的** 123 ** “{”)ap你的回应艺术也是如此..? – Swayam

回答

0

首先,我认为这是一个好主意,作为@shayan pourvatan说,发布整个logcat错误。

从您粘贴到您的文章中的1行来判断,我认为在将Integer对象转换为JSONObject时存在某种问题。什么我建议是不是把Integer到您的JSON,将其转换为String第一,看看是否有帮助(即Integer.toString(/*your number here*/)

+0

我发布了logcat错误先生。 – Dendi

1

的问题似乎是,你得到一个数组作为一个对象。试试这个:

SomeStudentModel model; 
ArrayList<SomeStudentModel> typeList = new ArrayList<>(); 
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create(); 

JSONObject jsonobject; 

try { 

     JSONArray result = response.getJSONArray("student"); 
      for (int i = 0; i < result.length(); i++) { 
      jsonobject = result.getJSONObject(i); 
      brand = gson.fromJson(jsonobject.toString(), 
      SomeStudentModel.class); 
      typeList.add(brand); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

好运

相关问题