Android 解析单对象响应
我试图解析这个JSON,但在日志中没有得到任何结果。 示例json:Android 解析单对象响应,android,jsonparser,Android,Jsonparser,我试图解析这个JSON,但在日志中没有得到任何结果。 示例json: { "coach_details": { "coach_id": "1556", "academy_id": "1", "username": "testcoach@gmail.com", "first_name": "test", "last_name": "test", "gender": "female",
{
"coach_details": {
"coach_id": "1556",
"academy_id": "1",
"username": "testcoach@gmail.com",
"first_name": "test",
"last_name": "test",
"gender": "female",
"email": "",
"mobile": "9874563210",
"middle_name": "",
"nick_name": "",
"state": "4"
},
"status": 1,
"message": "success"
}
我试过这个:
@Override
public void onResponse(JSONObject response) {
if (response != null) {
Log.d(TAG, "Response:\t" + response.toString());
try {
JSONObject jsonObject = new JSONObject(response.toString());
JSONObject details = jsonObject.getJSONObject("coach_details");
coachId = details.getString("coach_id");
Log.d(TAG, "Coach id:\t" + coachId);
Log.d(TAG, "Details:\t" + details);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
我可以用什么方法解析这个响应来获取详细的对象键?谢谢。我希望这对你有用
@Override
public void onResponse(JSONObject response) {
if (response != null) {
Log.d(TAG, "Response:\t" + response.toString());
try {
// response is already JSONObject.
// JSONObject jsonObject = new JSONObject(response.toString());
if (response.has("coach_details"){
JSONObject details = response.getJSONObject("coach_details");
if (details.has("coach_id"){
coachId = details.getString("coach_id");
Log.d(TAG, "Coach id:\t" + coachId);
Log.d(TAG, "Details:\t" + details);
} else {
Log.d(TAG, "It has Not coach_id data");
}
} else {
Log.d(TAG, "It has Not coach_details data");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
试着这样,
try {
JSONObject jsonObject1 = new JSONObject(response.toString());
JSONObject jsonObject2 = jsonObject1.getJSONObject("coach_details");
String coach_id = jsonObject2.getString("coach_id");
String academy_id = jsonObject2.getString("academy_id");
String status = jsonObject1.getString("status");
String message = jsonObject1.getString("message");
Log.e("coach_id", coach_id);
Log.e("academy_id", academy_id);
Log.e("status", status);
Log.e("message", message);
} catch (JSONException e) {
e.printStackTrace();
}
确保您收到服务器提供的响应。我正在发布我尝试的完整代码。 我可以看到所有的日志
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://devsports.copycon.in/api/coach_login";
Map<String, String> params = new HashMap();
params.put("username", "testcoach@gmail.com");
params.put("password", "123@abcd");
JSONObject parameters = new JSONObject(params);
JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
Log.d(TAG, "Response:\t" + response.toString());
try {
JSONObject jsonObject = new JSONObject(response.toString());
JSONObject details = jsonObject.getJSONObject("coach_details");
String coachId = details.getString("coach_id");
Log.d(TAG, "Coach id:\t" + coachId);
Log.d(TAG, "Details:\t" + details);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
//TODO: handle failure
}
});
Volley.newRequestQueue(this).add(jsonRequest);
}
考虑到您的映射类如下所示:
public class CoachResponse {
@SerializedName("coach_details")
@Expose
private CoachDetails coachDetails;
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("message")
@Expose
private String message;
public CoachDetails getCoachDetails() {
return coachDetails;
}
public void setCoachDetails(CoachDetails coachDetails) {
this.coachDetails = coachDetails;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public class CoachDetails {
@SerializedName("coach_id")
@Expose
private String coachId;
@SerializedName("academy_id")
@Expose
private String academyId;
@SerializedName("username")
@Expose
private String username;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;
@SerializedName("gender")
@Expose
private String gender;
@SerializedName("email")
@Expose
private String email;
@SerializedName("mobile")
@Expose
private String mobile;
@SerializedName("middle_name")
@Expose
private String middleName;
@SerializedName("nick_name")
@Expose
private String nickName;
@SerializedName("state")
@Expose
private String state;
public String getCoachId() {
return coachId;
}
public void setCoachId(String coachId) {
this.coachId = coachId;
}
public String getAcademyId() {
return academyId;
}
public void setAcademyId(String academyId) {
this.academyId = academyId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
}
您是否在日志中得到响应?如果出现任何响应,请同时记录
JSONException
!您确定收到了响应吗?@HeisenBrg,没有出现异常,响应被打印出来,但不是密钥fields@Mangal,响应(来自第一个日志)很好,因为示例json只是从中获得的。不起作用。仅记录响应,但不记录coachidshowing@Andromeda试试我的答案。我修正了密码。并显示logNot getting字段broI认为您没有从url获得空响应,请检查。您是否尝试在onResponse
方法中传递String
而不是JSONObject
?。如果响应是String
,那么这个答案就是解决这个问题的实际解决方案。是的,我认为如果将StringRequest与volly一起使用,将解决这个问题。这两种方法对我都不起作用。你能试试这个库吗?快安卓网络库,它比截击更容易,并且能看到结果。ThanksI通过使android studio失效并重新启动解决了这个问题。问题是日志没有显示json解析。我使用了你的gson代码,它非常棒。答案被接受。非常感谢你。
public class CoachResponse {
@SerializedName("coach_details")
@Expose
private CoachDetails coachDetails;
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("message")
@Expose
private String message;
public CoachDetails getCoachDetails() {
return coachDetails;
}
public void setCoachDetails(CoachDetails coachDetails) {
this.coachDetails = coachDetails;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public class CoachDetails {
@SerializedName("coach_id")
@Expose
private String coachId;
@SerializedName("academy_id")
@Expose
private String academyId;
@SerializedName("username")
@Expose
private String username;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;
@SerializedName("gender")
@Expose
private String gender;
@SerializedName("email")
@Expose
private String email;
@SerializedName("mobile")
@Expose
private String mobile;
@SerializedName("middle_name")
@Expose
private String middleName;
@SerializedName("nick_name")
@Expose
private String nickName;
@SerializedName("state")
@Expose
private String state;
public String getCoachId() {
return coachId;
}
public void setCoachId(String coachId) {
this.coachId = coachId;
}
public String getAcademyId() {
return academyId;
}
public void setAcademyId(String academyId) {
this.academyId = academyId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
}