Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在另一个JSONObject中解析JSONObject,使用Android Volley进行HTTP连接_Android_Json - Fatal编程技术网

如何在另一个JSONObject中解析JSONObject,使用Android Volley进行HTTP连接

如何在另一个JSONObject中解析JSONObject,使用Android Volley进行HTTP连接,android,json,Android,Json,因此,我在读取android volley中onResponse方法给出的JSON数据时遇到问题,这是我的GET代码 private void GetSV(){ final String getURL = "my URL"; JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, getURL, null, new Response.Listener<JSONObject>()

因此,我在读取android volley中onResponse方法给出的JSON数据时遇到问题,这是我的GET代码

private void GetSV(){
    final String getURL = "my URL";

    JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, getURL, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
                Iterator keys = response.keys();
                while (keys.hasNext()){
                    Object key = keys.hasNext();
                    switch (key.toString()){
                        case "statusCode":
                            statusCode = getValue(response, "statusCode");
                            break;
                        default:
                            break;
                    }
                    try {
                    JSONObject data = response.getJSONObject("data");
                    Iterator innerKeys = data.keys();
                    while (innerKeys.hasNext()){
                        Object innerKey = innerKeys.hasNext();
                        switch (innerKey.toString()){
                            case "Id":
                                User.setId(getValue(response, "Id"));
                                break;
                            case "firstName":
                                User.setFirstName(getValue(response, "firstName"));
                                break;
                            case "lastName":
                                User.setLastName(getValue(response, "lastName"));
                                User.setName(User.getFirstName() + " " + User.getLastName());
                                name.setText(User.getName());
                                break;
                            case "email":
                                User.setEmail(getValue(response, "email"));
                                break;
                            case "school":
                                User.setCollege(getValue(response, "school"));
                                college.setText(User.getCollege());
                                break;
                            case "fact":
                                User.setRandom_fact(getValue(response, "fact"));
                                random_fact.setText(User.getRandom_fact());
                                break;
                            case "age":
                                User.setAge(getValue(response, "age"));
                                age.setText(User.getAge());
                                break;
                            case "major":
                                User.setMajor(getValue(response, "major"));
                                major.setText(User.getMajor());
                                break;
                            default:
                                break;
                        }
                    }
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
}}, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            return params;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(context);
    requestQueue.add(getRequest);
}

我得到了状态码,但没有收到任何其他字段。这是在另一个JSON解析中进行JSON解析的正确方法吗?如果是这样的话,这是最理想的方法吗?

您可以尝试使用此源代码

requestQueue = Volley.newRequestQueue(this);

    JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, JsonURL,
            // The third parameter Listener overrides the method onResponse() and passes
            //JSONObject as a parameter
            new Response.Listener<JSONObject>() {

                // Takes the response from the JSON request
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        if(response.getString("statusCode").equeal("200")) {
                            User user = new User();

                            JSONObject obj = response.getJSONObject("data");

                            user.setId(obj.getString("Id"));
                            user.setFirstName(obj.getString("firstName"));
                            user.setLastName(obj.getString("lastName"));
                            user.setName(obj.getString("firstName")+" "+obj.getString("lastName"));
                            user.setEmail(obj.getString("email"));
                            user.setCollege(obj.getString("school"));
                            user.setRandom_fact(obj.getString("fact"));
                            user.setAge(obj.getString("age"));
                            user.setMajor(obj.getString("major"));

                            name.setText(user.getName());
                            User.setEmail(user.getEmail());
                            college.setText(user.getCollege());
                            random_fact.setText(user.getRandom_fact());
                            age.setText(user.getAge());
                            major.setText(user.getMajor());
                        }


                    }
                    // Try and catch are included to handle any errors due to JSON
                    catch (JSONException e) {
                        // If an error occurs, this prints the error to the log
                        e.printStackTrace();
                    }
                }
            },
            // The final parameter overrides the method onErrorResponse() and passes VolleyError
            //as a parameter
            new Response.ErrorListener() {
                @Override
                // Handles errors that occur due to Volley
                public void onErrorResponse(VolleyError error) {
                    Log.e("Volley", "Error");
                }
            }
    );
    // Adds the JSON object request "obreq" to the request queue
    requestQueue.add(obreq);
}
requestQueue=Volley.newRequestQueue(此);
JsonObjectRequest obreq=新的JsonObjectRequest(Request.Method.GET、JsonURL、,
//第三个参数Listener重写onResponse()方法并传递
//JSONObject作为参数
新的Response.Listener(){
//获取JSON请求的响应
@凌驾
公共void onResponse(JSONObject响应){
试一试{
if(response.getString(“statusCode”).equal(“200”)){
用户=新用户();
JSONObject obj=response.getJSONObject(“数据”);
user.setId(obj.getString(“Id”);
user.setFirstName(obj.getString(“firstName”);
user.setLastName(obj.getString(“lastName”);
user.setName(obj.getString(“firstName”)+“”+obj.getString(“lastName”);
user.setEmail(obj.getString(“email”);
user.setCollege(obj.getString(“学校”);
user.setRandom_事实(obj.getString(“事实”);
user.setAge(obj.getString(“age”);
user.setMajor(obj.getString(“major”);
name.setText(user.getName());
User.setEmail(User.getEmail());
college.setText(user.getCollege());
random_fact.setText(user.getRandom_fact());
age.setText(user.getAge());
major.setText(user.getMajor());
}
}
//包含Try和catch来处理由于JSON引起的任何错误
捕获(JSONException e){
//如果发生错误,这会将错误打印到日志中
e、 printStackTrace();
}
}
},
//最后一个参数重写方法onErrorResponse()并传递截击错误
//作为参数
新的Response.ErrorListener(){
@凌驾
//处理由于截击而发生的错误
公共无效onErrorResponse(截击错误){
Log.e(“截击”、“错误”);
}
}
);
//将JSON对象请求“obreq”添加到请求队列
添加(obreq);
}
使用

范例

try {
    Iterator<String> keys = response.keys();
    while (keys.hasNext()) {
        switch (keys.next().toString()) {
            case "statusCode":

                    Toast.makeText(this, "" + response.getString("statusCode"), Toast
                        .LENGTH_SHORT).show();

                break;
            default:
                break;
        }
        JSONObject data = response.getJSONObject("data");
        Iterator<String> innerKeys = data.keys();
        while (innerKeys.hasNext()) {
            switch (innerKeys.next().toString()) {
                case "Id":
                    //User.setId(getValue(response, "Id"));
                    Toast.makeText(this, "" + data.getString("Id"), Toast
                        .LENGTH_SHORT).show();
                    break;
            }
        }
    }
    } catch (JSONException e) {
        Log.e("Error : ", e.getMessage(), e);
    }

}
试试看{
迭代器键=response.keys();
while(keys.hasNext()){
开关(keys.next().toString()){
案例“状态代码”:
Toast.makeText(此“”+response.getString(“状态代码”),Toast
.LENGTH_SHORT).show();
打破
违约:
打破
}
JSONObject data=response.getJSONObject(“数据”);
迭代器innerKeys=data.keys();
while(innerKeys.hasNext()){
开关(innerKeys.next().toString()){
案例“Id”:
//setId(getValue(响应,“Id”);
Toast.makeText(此“”+data.getString(“Id”),Toast
.LENGTH_SHORT).show();
打破
}
}
}
}捕获(JSONException e){
Log.e(“错误:”,e.getMessage(),e);
}
}
Iterator<String> keys = response.keys();  

 insteadof 

Iterator keys = response.keys();
switch (keys.next().toString()) 

insteadof

Object key = keys.hasNext();
                switch (key.toString())
try {
    Iterator<String> keys = response.keys();
    while (keys.hasNext()) {
        switch (keys.next().toString()) {
            case "statusCode":

                    Toast.makeText(this, "" + response.getString("statusCode"), Toast
                        .LENGTH_SHORT).show();

                break;
            default:
                break;
        }
        JSONObject data = response.getJSONObject("data");
        Iterator<String> innerKeys = data.keys();
        while (innerKeys.hasNext()) {
            switch (innerKeys.next().toString()) {
                case "Id":
                    //User.setId(getValue(response, "Id"));
                    Toast.makeText(this, "" + data.getString("Id"), Toast
                        .LENGTH_SHORT).show();
                    break;
            }
        }
    }
    } catch (JSONException e) {
        Log.e("Error : ", e.getMessage(), e);
    }

}