Android 我试图在textview中获取JSON数据,但它给出了一个错误

Android 我试图在textview中获取JSON数据,但它给出了一个错误,android,json,android-volley,Android,Json,Android Volley,我试图将json数据导入textview,但是,它给出了一个错误。代码如下 这是我的配置类 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=&a

我试图将json数据导入textview,但是,它给出了一个错误。代码如下

这是我的配置类

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();
            }
            }
ImageView标准;
私有EditText editTextId,editTextPass;
私人按钮按钮;
私有文本视图文本视图结果;
私有对话框加载;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u my\u info);
std=(ImageView)findViewById(R.id.imageView2);
Picasso.with(getApplicationContext()).load(“
http://www.shikshakiore.com/image/logo.png)改为(标准);
editTextId=(EditText)findViewById(R.id.editText6);
editTextPass=(EditText)findViewById(R.id.editText7);
buttonGet=(按钮)findViewById(R.id.button2);
textViewResult=(TextView)findViewById(R.id.textView3);
setOnClickListener(这个);
}
私有void getData(){
字符串id=editTextId.getText().toString().trim();
字符串传递=editTextPass.getText().toString().trim();
if(id.equals(“”){
Toast.makeText(这是“请输入id”,Toast.LENGTH_LONG.show();
回来
}
if(通过等于(“”){
Toast.makeText(这是“请输入密码”,Toast.LENGTH_LONG.show();
回来
}
loading=ProgressDialog.show(这是“请稍候…”、“正在获取…”、false、false);
字符串url=Config.DATA\u url+editTextId+editTextPass.getText().toString().trim();
StringRequest StringRequest=新的StringRequest(url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
loading.dispose();
showJSON(响应);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(My_info.this,error.getMessage().toString(),Toast.LENGTH_LONG.show();
}
});
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);
}
私有void showJSON(字符串响应){
字符串注册_No=“”;
字符串Student_name=“”;
字符串地址=”;
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONArray result=jsonObject.getJSONArray(Config.JSON_数组);
JSONObject collegeData=result.getJSONObject(0);
注册号=collegeData.getString(Config.KEY\u REG);
Student\u name=collegeData.getString(Config.KEY\u name);
address=collegeData.getString(Config.KEY\u地址);
}捕获(JSONException e){
e、 printStackTrace();
}
textViewResult.setText(“注册号:\t”+注册号+”\n学生姓名:\t”+学生姓名+“\n地址:\t”+地址);
}
@凌驾
公共void onClick(视图v){
getData();
}
}

从您提供的图像中,您得到的JSON响应返回一个JSON对象,因此您实际上没有JSON数组,并且在java代码中,您试图获取键“result”的JSON数组,但该键在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);
因此,为了简单地解释发生了什么,您有一个JSON响应,来自您创建的JSONObject服务器,它接受所有键并将它们放入JSONObject,然后您根据键访问值。在JSON响应中,您从未得到“结果”,因此您试图从该键创建JSONArray列表的操作不存在,因此您也无法从该键获取任何内容


希望此答案能帮助您更好地理解JSON,并帮助您解决错误。

再次单击caps lock并键入please。。它似乎被卡住了“但它给出了错误”什么错误?在你得到-8之前,我建议你取消呼叫。先生,当我在手机上运行这个apk时。。。一切都在运行,但当我单击此活动时…它不幸停止…发布堆栈跟踪。不,先生,在根据您更改代码后,它也不幸停止。如果我的代码中有错误。所以请根据这个代码给我正确的代码。感谢您的回复。请向我们显示堆栈跟踪,以便我们了解应用程序崩溃的原因。当我输入用户名和密码并单击“获取”按钮时..进度对话框启动,当您在设备或模拟器上运行应用程序时,安卓studio中的活动不幸停止,android监视器将打开,当崩溃发生时,其中会显示一个红色文本列表。红色文本是应用程序崩溃位置的描述。如果您与我们分享,我们也许可以找出为什么您的应用程序会在那里崩溃