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