2017-04-15 68 views
-3

我試圖讓json數據進入textview,但是,它給出了一個錯誤。代碼如下。我想在textview中獲取JSON數據,但它給出了一個錯誤

THIS IS MY JSON DATA

這是我的配置類

package com.example.hp.eprincipal; 

/** 
* Created by hp on 4/15/2017. 
*/ 

public class Config { 
    public static final String DATA_URL = "http://smcs.eprincipal.in/api/studentdetails.aspx?user_name=&password="; 
    public static final String KEY_REG = "Registration_No"; 
    public static final String KEY_NAME = "Student_name"; 
    public static final String KEY_ADDRESS = "address"; 
    public static final String JSON_ARRAY = "result"; 
} 

下面是代碼,我想有從URL數據去TextView的

ImageView std; 
private EditText editTextId,editTextPass; 
private Button buttonGet; 
private TextView textViewResult; 
private ProgressDialog loading; 

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

     std = (ImageView) findViewById(R.id.imageView2); 
     Picasso.with(getApplicationContext()).load(" 

    http://www.shikshakiore.com/image/logo.png").into(std); 

      editTextId = (EditText) findViewById(R.id.editText6); 
      editTextPass = (EditText) findViewById(R.id.editText7); 
      buttonGet = (Button) findViewById(R.id.button2); 
      textViewResult = (TextView) findViewById(R.id.textView3); 
      buttonGet.setOnClickListener(this); 

     } 



      private void getData() { 
       String id = editTextId.getText().toString().trim(); 
       String pass = editTextPass.getText().toString().trim(); 
       if (id.equals("")) { 
        Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show(); 
        return; 
       } 

       if (pass.equals("")) { 
        Toast.makeText(this, "Please enter password", Toast.LENGTH_LONG).show(); 
        return; 
       } 

       loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

       String url = Config.DATA_URL+editTextId+editTextPass.getText().toString().trim(); 


       StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         loading.dismiss(); 
         showJSON(response); 
        } 
       }, 
         new Response.ErrorListener() { 
          @Override 
          public void onErrorResponse(VolleyError error) { 
           Toast.makeText(My_info.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
          } 
         }); 

       RequestQueue requestQueue = Volley.newRequestQueue(this); 
       requestQueue.add(stringRequest); 
      } 

      private void showJSON(String response){ 
       String Registration_No=""; 
       String Student_name=""; 
       String address = ""; 
       try { 
        JSONObject jsonObject = new JSONObject(response); 
        JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
        JSONObject collegeData = result.getJSONObject(0); 
        Registration_No = collegeData.getString(Config.KEY_REG); 
        Student_name = collegeData.getString(Config.KEY_NAME); 
        address = collegeData.getString(Config.KEY_ADDRESS); 

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


textViewResult.setText("Registration No:\t"+Registration_No+"\nStudent Name:\t"+Student_name+"\nAddress:\t" +address); 
     } 



      @Override 
      public void onClick(View v) { 
      getData(); 
      } 
      } 
+1

再次點擊大寫鎖定並輸入please ..好像被卡住了 –

+0

*「但它給出錯誤」* **什麼**錯誤? ***嘆了口氣*** –

+0

我建議刪除吶喊,然後你得到-8。 – halfer

回答

1

從您提供的圖片你得到的JSON響應是返回一個JSON對象,所以你實際上沒有一個JSON數組,並且在你的Java代碼中,你正試圖獲取JSON數組的key sult「,但是這個關鍵在你的JSON中不存在。我很確定,如果你在JSONArray之後設置斷點,你會檢查你的json對象是否被創建,但是你的JSONArray不是。

我覺得你只需要做的是以下幾點:

JSONObject collegeData = new JSONObject(response); 
Registration_No = collegeData.getString(Config.KEY_REG); 
Student_name = collegeData.getString(Config.KEY_NAME); 
address = collegeData.getString(Config.KEY_ADDRESS); 

因此,要在短期發生了什麼事,你有來自服務器你創建的JSONObject這需要所有的按鍵和JSON響應解釋將它們放入JSONObject中,然後根據鍵訪問該值。在你的JSON響應中,你從來沒有「結果」,所以你試圖從該關鍵字創建一個JSONArray列表不存在,所以你無法從中獲取任何東西。

希望這個答案可以幫助您更好地理解JSON並幫助解決您的錯誤。

+0

不,先生它也不幸停止後,根據你改變代碼。 –

+0

如果我的代碼有錯誤。所以請根據此代碼給我正確的代碼。謝謝您的回覆 –

+0

您能否向我們展示堆棧跟蹤,以便我們知道應用程序崩潰的原因。 – Serj

相關問題