如何在另一个JSONObject中解析JSONObject,使用Android Volley进行HTTP连接
因此,我在读取android volley中onResponse方法给出的JSON数据时遇到问题,这是我的GET代码如何在另一个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>()
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);
}
}