Android Gson json到具有自定义FieldNamingPolicy的对象

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

在一个android项目中,我创建了从xsd文件中提取的类,看起来像这样

@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你检查我的答案了吗?是的,对不起,我出去吃午饭了。谢谢你的帮助