使用带有通用成员

时间:2015-09-21 12:36:12

标签: android json generics gson

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

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

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

我尝试使用generics

 public class JSONBody<T> {
        private RequestHeader requestHeader;
        private T loginRequest;
        private Map<String, Object> additionalProperties = new HashMap<String, Object>();
} 

...


 Type fooType = new TypeToken<JSONBody<LoginRequest>>() {
              }.getType();

              JSONBody<LoginRequest> body1 = gson.fromJson(body,fooType);

但是我没有得到如何传达gson使用LoginRequest或LoginResponse类应该用于转换?

样品申请:

 "jsonBody": {
        "requestHeader": {
          "serviceID": "",
          "serviceCode": "LOGIN",
          "deviceDetails": {
            "deviceOS": "Win32",
            "deviceOSVersion": "Win32",
            "uuid": "A12ED324"
          }
        },
        "loginRequest": {
          "username": "asd",
          "pwd": "123"
        }

示例回复:

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

0 个答案:

没有答案