Android Gson json到具有自定义FieldNamingPolicy的对象
在一个android项目中,我创建了从xsd文件中提取的类,看起来像这样Android Gson json到具有自定义FieldNamingPolicy的对象,android,json,xml,gson,Android,Json,Xml,Gson,在一个android项目中,我创建了从xsd文件中提取的类,看起来像这样 @xmlacessortype(xmlacesstype.FIELD) @XmlType(name=“LoginUserResponse1Document”,比例器={ “LGNUSRSPN” }) 公共类LoginUserResponse1文档{ @XmlElement(name=“lgnusrspn”,必需=true) 受保护的LoginUserResponseV01 lgnUsrRspn; /** *获取lgnUsr
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“LoginUserResponse1Document”,比例器={
“LGNUSRSPN”
})
公共类LoginUserResponse1文档{
@XmlElement(name=“lgnusrspn”,必需=true)
受保护的LoginUserResponseV01 lgnUsrRspn;
/**
*获取lgnUsrRspn属性的值。
*
*@返回
*可能的对象是
*{@link LoginUserResponseV01}
*
*/
public LoginUserResponseV01 getLgnUsrRspn(){
返回LGNUSRSPN;
}
/**
*设置LGNUSRSPN属性的值。
*
*@param值
*允许的对象是
*{@link LoginUserResponseV01}
*
*/
public void setLgnUsrRspn(LoginUserResponseV01值){
this.lgnusrspn=值;
}
}
im使用的api使用出现在@xmlement(name=“LgnUsrRspn”,required=true)
中的名称,例如,在一个请求中,我得到一个json响应,如下所示:
{
"LgnUsrRspn": {
"Hdr": {
"XchgId": "7403AC2E976D46968F6B4839E2FCB7A6",
"DtTm": "2017-04-05T09:20:47.593+0000",
"NxtFlow": "LOG"
},
"LgnUsr": {
"Rslt": {
"RsltStts": "DECL",
"RsltRsn": ""
}
}
}
}
我还有这个类来处理json转换
公共类JsonBuilder{
私有JsonBuilder(){
}
公共静态字符串toJson(对象pojo){
GsonBuilder GsonBuilder=新的GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE);
Gson-Gson=gsonBuilder.create();
返回gson.toJson(pojo);
}
来自json的公共静态对象(字符串json,类类型){
GsonBuilder GsonBuilder=新的GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE);
Gson-Gson=gsonBuilder.create();
返回gson.fromJson(json,类型);
}
}
我的问题是,是否有一种方法可以创建一个自定义的FieldNamingPolicy来与GsonBuilder一起使用,或者有一种方法可以使用我在
@XmlElement(name=“LgnUsrRspn”,required=true)”中的名称您可以使用设置FieldNamingStrategy()
来传递您自己的FieldNamingStrategy
实现
比如说,
public类XsdAnnotation实现FieldNamingStrategy{
@凌驾
公共字符串translateName(字段){
XmlElement fieldNamingPolicy=field.getAnnotation(XmlElement.class);
返回fieldNamingPolicy.name();
}
}
但我建议将其与@SerializedName
一起使用,您可以使用setFieldNamingStrategy()
来传递自己的FieldNamingStrategy
实现
比如说,
public类XsdAnnotation实现FieldNamingStrategy{
@凌驾
公共字符串translateName(字段){
XmlElement fieldNamingPolicy=field.getAnnotation(XmlElement.class);
返回fieldNamingPolicy.name();
}
}
但我建议您将其与@SerializedName
一起使用,为什么您不能为您的字段添加另一个注释,如GSON的@SerializedName(“lgnusrspn”)
?为什么您不能为GSON的字段添加另一个注释,如@SerializedName(“lgnusrspn”)
,对不起,我出去吃午饭了谢谢你的邀请help@Ric你检查我的答案了吗?是的,对不起,我出去吃午饭了。谢谢你的帮助