Android 使用带有泛型成员的GSON将JSON转换为Java

Android 使用带有泛型成员的GSON将JSON转换为Java,android,json,generics,gson,Android,Json,Generics,Gson,我需要调用RESTWebService,它接受json并给出json响应。在json结构中,有一个请求头,它是所有API请求和响应所共有的。在下面的示例中,您会发现请求标头是常见的,唯一更改的字段是loginResult和loginResponse 我将为每个请求和响应生成类POJO类。一种方法是将loginRequest和loginResponse两个字段都添加到JSONBody类中。我有更多的API调用,JSONBody将有更多不需要的成员 我的问题是:如何封装变量字段(loginResul

我需要调用RESTWebService,它接受json并给出json响应。在json结构中,有一个请求头,它是所有API请求和响应所共有的。在下面的示例中,您会发现请求标头是常见的,唯一更改的字段是loginResult和loginResponse

我将为每个请求和响应生成类POJO类。一种方法是将loginRequest和loginResponse两个字段都添加到JSONBody类中。我有更多的API调用,JSONBody将有更多不需要的成员

我的问题是:
如何封装变量字段(loginResult、loginResponse等)并将其传递给gson

我试着用

样本响应:

 "jsonBody": {
        "requestHeader": {
          "serviceID": "",
          "serviceCode": "LOGIN",
          "deviceDetails": {
            "deviceOS": "Win32",
            "deviceOSVersion": "Win32",
            "uuid": "A12ED324"
          }
        },
        "loginResponse": {
          "responseCode": "200",
          "responseString": "Success"
        }

您可以通过以下方式简单地告诉gson要使用哪个类进行转换:

Gson gson = new Gson();
LoginResponse response = gson.fromJson(RESPONSE_STRING, LoginResponse .class);

其中RESPONSE_STRING是服务器响应的字符串表示形式,可以是字节[]。

这不会解决代码重复的问题。是的,您是对的。但不建议使用太多在android中使用运行时反射的通用代码。经过一些级别的代码复制就可以了。
 "jsonBody": {
        "requestHeader": {
          "serviceID": "",
          "serviceCode": "LOGIN",
          "deviceDetails": {
            "deviceOS": "Win32",
            "deviceOSVersion": "Win32",
            "uuid": "A12ED324"
          }
        },
        "loginResponse": {
          "responseCode": "200",
          "responseString": "Success"
        }
Gson gson = new Gson();
LoginResponse response = gson.fromJson(RESPONSE_STRING, LoginResponse .class);