在android项目中,即时通讯使用volley与API通讯。 在请求中的一个,我得到这个信息将Volley的JSONObject响应转换为POJO
{
"RgstrUsrRspn": {
"Hdr": {
"XchgId": "7403AC2E976D46968F6B4839E2FCB7A6",
"DtTm": "2017-04-12T09:48:17.856+0000"
},
"RgstrUsr": {
"Rslt": {
"RsltStts": "DECL",
"RsltRsn": ""
}
}
}
}一个JSONObject响应
然后我要变成这个类的一个对象是:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RegisterUserResponse1Document", propOrder = {
"rgstrUsrRspn"
})
public class RegisterUserResponse1Document {
@XmlElement(name = "RgstrUsrRspn", required = true)
protected RegisterUserResponseV01 RgstrUsrRspn;
//...
}
这些都是子类
public class RegisterUserResponseV01 {
@XmlElement(name = "Hdr", required = true)
protected Header2 Hdr;
@XmlElement(name = "RgstrUsr", required = true)
protected RegisterUserResponse1 RgstrUsr;
//...
}
public class Header2 {
@XmlElement(name = "XchgId", required = true)
protected String xchgId;
@XmlElement(name = "DtTm", required = true)
protected Date dtTm;
@XmlElement(name = "NxtFlow")
protected NextFlowCode nxtFlow;
//...
}
public class RegisterUserResponse1 {
@XmlElement(name = "TknData")
protected Token TknData;
@XmlElement(name = "Rslt", required = true)
protected Result1 Rslt;
//...
}
public class Result1 {
@XmlElement(name = "RsltStts", required = true)
protected ResultStatus RsltStts; //this is an enum
@XmlElement(name = "RsltRsn", required = true)
protected String RsltRsn;
//...
}
当我从volley i获得成功响应触发此监听
@Override
public void notifySuccess(String requestType, JSONObject response) {
Log.e("RESPONSE Success",response.toString());
Gson gson = new Gson();
RegisterUserResponse1Document registerUserResponse1Document1 = (RegisterUserResponse1Document)JsonBuilder.fromJson(response.toString(),RegisterUserResponse1Document.class);
RegisterUserResponse1Document registerUserResponse1Document2 = gson.fromJson(response.toString(),RegisterUserResponse1Document.class);
//....
}
但两者registerUserResponse1Document1
和registerUserResponse1Document2
得到填充空值。我应该使用另一种方法将响应转换为RegisterUserResponse1Document
?
编辑
JsonBuilder只是一些辅助方法类,像这样的
public static Object fromJson(String json, Class type){
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingStrategy(FieldNamingPolicy.IDENTITY);
gsonBuilder.setDateFormat(DateFormat);
Gson gson = gsonBuilder.serializeNulls().create();
return gson.fromJson(json, type);
}
EDIT 2
所有类都具有getter和setter方法,我只是被遗漏他们要缩短文本。
'@ XmlElement'是XML,不是吗? –
你的回复是JSON而不是XML – AlexTa
也不确定'JsonBuilder.fromJson'在做什么,但这不是Gson –