栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将Gson与接口类型一起使用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将Gson与接口类型一起使用

假设您可能拥有的不同的JSON请求彼此之间并没有太大不同,我建议采用一种不同的方法,我认为这种方法更为简单。

假设您有以下3个不同的JSON请求:

{    "type":"LOGIN",    "username":"someuser",    "password":"somepass"}////////////////////////////////{    "type":"SOMEREQUEST",    "param1":"somevalue",    "param2":"somevalue"}////////////////////////////////{    "type":"OTHERREQUEST",    "param3":"somevalue"}

Gson允许您使用一个类来 包装 所有可能的响应,如下所示:

public class Request {   @SerializedName("type")     private String type;  @SerializedName("username")  private String username;  @SerializedName("password")  private String password;  @SerializedName("param1")  private String param1;  @SerializedName("param2")  private String param2;  @SerializedName("param3")  private String param3;  //getters & setters}

通过使用批注

@SerializedName
,当Gson尝试解析JSON请求时,它会针对该类中的每个命名属性查找JSON请求中是否存在同名字段。如果没有此类字段,则将类中的属性设置为
null

这样,您可以仅使用您的

Request
类来解析许多不同的JSON响应,如下所示:

Gson gson = new Gson();Request request = gson.fromJson(jsonString, Request.class);

将JSON请求解析到您的类之后,就可以将数据从 wrap 类传输到具体

XxxxRequest
对象,例如:

switch (request.getType()) {  case "LOGIN":    LoginRequest req = new LoginRequest(request.getUsername(), request.getPassword());    break;  case "SOMEREQUEST":    SomeRequest req = new SomeRequest(request.getParam1(), request.getParam2());    break;  case "OTHERREQUEST":    OtherRequest req = new OtherRequest(request.getParam3());    break;}

请注意,如果您有许多不同的JSON请求并且这些请求彼此之间非常不同,则此方法会变得更加乏味,但是即使如此,我仍然认为这是一种很好且非常简单的方法…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号