Android 改型2.0中的嵌套Json解析
解析嵌套json时遇到问题。我正在使用翻新2.0。这是我要解析的json格式:Android 改型2.0中的嵌套Json解析,android,json,retrofit2,Android,Json,Retrofit2,解析嵌套json时遇到问题。我正在使用翻新2.0。这是我要解析的json格式: { "type": "All DONE", "status": "SUCCESS", "statusCode": "200", "statusMessage": "Contacts synced successfully", "data": { "__v": 0, "uuid": "584d632d87f0c01c44262da4", "mobile": "882471",
{
"type": "All DONE",
"status": "SUCCESS",
"statusCode": "200",
"statusMessage": "Contacts synced successfully",
"data": {
"__v": 0,
"uuid": "584d632d87f0c01c44262da4",
"mobile": "882471",
"name": "Manit",
"globalChecksum": "snfvsjnvrjnvlwkrnsfwlkrnfwk",
"_id": "584d632d87f0c01c44262da8",
"contacts": [
{
"name": "CC",
"mobile": "9876281",
"checksum": "jkndvsjlsnd",
"_id": "584d632d87f0c01c44262da5"
},
{
"name": "CC",
"mobile": "123456789",
"checksum": "jkndvsjlsnd",
"_id": "584d632d87f0c01c44262da6"
}
]
}
}
这是我用来解析这个json的代码:
UsersInterface usersInterface = ApiClient.getClient().create(UsersInterface.class);
Call<SyncTableResponse> call = usersInterface.syncContacts(json);
call.enqueue(new Callback<SyncTableResponse>() {
@Override
public void onResponse(Call<SyncTableResponse> call, retrofit2.Response<SyncTableResponse> response) {
if(response.isSuccessful()){
Log.d("RESPONSE", String.valueOf(response.body()));
String type = response.body().getType();
String status = response.body().getStatus();
String status_code = response.body().getStatus_code();
String status_message = response.body().getStatus_message();
Log.d("RESPONSE", type);
Log.d("RESPONSE", status);
Log.d("RESPONSE", status_code);
Log.d("RESPONSE", status_message);
JSONObject data = response.body().getData();
Log.d("DATA", response.body().toString());
if(status_code.equals(Constants.SUCCESS)){
_data = data;
String mobile = null;
try {
mobile = data.getString("mobile");
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("DATA!", "Mobile: "+mobile);
//Toast.makeText(context, "Success!", Toast.LENGTH_SHORT).show();
}else{
Log.d("DATA!", "ERROR: " + status_code);
//Toast.makeText(context, "ERROR: " + status_code, Toast.LENGTH_SHORT).show();
}
}else{
//Toast.makeText(context, "Response Unsuccessful!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<SyncTableResponse> call, Throwable t) {
Log.d("RESPONSE", "FALIURE CONNECTING addUser: " + t.getMessage());
//Toast.makeText(context, "Response Faliure!", Toast.LENGTH_LONG).show();
}
});
UsersInterface UsersInterface=ApiClient.getClient().create(UsersInterface.class);
Call Call=usersInterface.syncContacts(json);
call.enqueue(新回调(){
@凌驾
公共void onResponse(呼叫,改装2.响应){
if(response.issusccessful()){
Log.d(“RESPONSE”,String.valueOf(RESPONSE.body());
字符串类型=response.body().getType();
字符串状态=response.body().getStatus();
字符串状态代码=response.body().getStatus代码();
String status_message=response.body().getStatus_message();
Log.d(“响应”,类型);
Log.d(“响应”,状态);
Log.d(“响应”,状态代码);
Log.d(“响应”,状态信息);
JSONObject data=response.body().getData();
Log.d(“DATA”,response.body().toString());
if(状态代码等于(常量成功)){
_数据=数据;
字符串mobile=null;
试一试{
mobile=data.getString(“mobile”);
}捕获(JSONException e){
e、 printStackTrace();
}
Log.d(“数据!”,“手机:+Mobile”);
//Toast.makeText(上下文,“Success!”,Toast.LENGTH_SHORT.show();
}否则{
Log.d(“数据!”,“错误:+状态代码);
//Toast.makeText(上下文,“错误:+status_code,Toast.LENGTH_SHORT).show();
}
}否则{
//Toast.makeText(上下文,“响应不成功!”,Toast.LENGTH_LONG.show();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.d(“RESPONSE”,“faliureconnectingadduser:+t.getMessage());
//Toast.makeText(上下文,“Response Faliure!”,Toast.LENGTH_LONG.show();
}
});
问题是,每当我使用此代码时,我都会得到
类型
,状态
,状态代码
,状态消息
,但是数据
总是空的。使用gson
库(与改型
一起工作)…将使您的生活更加轻松,我可以使用jackson进行改型解析,快速创建与json结果相同的POJO,并使用gson
将json结果转换为POJO。我会尽力让你知道的。。感谢使用gson
library(与reformation
一起使用)…将使您的生活更加轻松我使用jackson进行解析,它可以快速创建与json结果相同的POJO,并使用gson
将json结果转换为POJO。我会尽力让你知道的。。谢谢