Android 在改型2中如何处理来自同一端点的不同JSON响应类型

Android 在改型2中如何处理来自同一端点的不同JSON响应类型,android,Android,这是我的json api:- 正如您所看到的,它有许多不同类型的对象。 当我粘贴到它给我多个类 我想知道如何从同一个端点使用改型为那些模型类设置数据?我建议只使用一个模型类来解析使用改型的响应 例如: 创建一个模型类,比如Response.java,它包含以下模型类: 特点 趋势事件 普及率 提议 场地 艺术家 以上所有模型类都包含各自的数据。通过这种方式,您可以轻松解析响应,如果API排除响应中的任何模型,则该模型的解析值将为null。在UI中显示之前,您应该始终检查它 希望这会有帮助 从生成

这是我的json api:-

正如您所看到的,它有许多不同类型的对象。 当我粘贴到它给我多个类


我想知道如何从同一个端点使用改型为那些模型类设置数据?

我建议只使用一个模型类来解析使用改型的响应

例如: 创建一个模型类,比如
Response.java
,它包含以下模型类:

  • 特点
  • 趋势事件
  • 普及率
  • 提议
  • 场地
  • 艺术家
  • 以上所有模型类都包含各自的数据。通过这种方式,您可以轻松解析响应,如果API排除响应中的任何模型,则该模型的解析值将为
    null
    。在UI中显示之前,您应该始终检查它


    希望这会有帮助

    从生成POJO后
    您将为响应中的每个对象获得一个类。但是您将只使用名为示例的类进行改装。稍后,您可以通过它访问所有响应值

    当然,将响应类重命名为与端点更相关的类。e、 g“主页响应”

    您的端点将是这样的

    @GET("get_homepage_data")
    Call<Example> getExample(@Query("token") String token);
    
    @GET(“获取主页数据”)
    调用getExample(@Query(“token”)字符串token);
    
    端点调用示例

       Call<Example> call = api.getExample(token);
        call.enqueue(new Callback<Example>() {
            @Override
            public void onResponse(Call<Example> call, Response<Example> response) {
                Example example = response.body();
                // use example object to get any value you want
    
            } 
    
            @Override
            public void onFailure(Call<HyperResponse> call, Throwable t) {
                if (t != null && t.getMessage() != null)
                    Log.e("Failure", "Example Failure" + t.getMessage());
            }
        });
    
    Call Call=api.getExample(令牌);
    call.enqueue(新回调(){
    @凌驾
    公共void onResponse(调用、响应){
    示例=response.body();
    //使用示例对象获取所需的任何值
    } 
    @凌驾
    失败时公共无效(调用调用,可丢弃的t){
    如果(t!=null&&t.getMessage()!=null)
    Log.e(“失败”,“示例失败”+t.getMessage());
    }
    });
    
    如果它给你多个类就可以了。只需将根类用于您的改装。稍后,您可以导航根模型类以转到数据/类,您需要从中获取数据。您可以详细解释一下吗?确定图像您希望在用户类中包含数据,但用户类具有地址对象。因此,您可以将用户作为响应对象类型传递给改型。并且,一旦改型给你用户,你就可以访问user.getAddress()获取您的地址对象。改型将从您使用的响应中获取可解析的根对象类
    jsonschema2pojo
    默认情况下,您的根类将被称为
    Example
    ,并且由于您的json根是一个数组,您应该像改型中的
    Call
    一样调用它。我如何将数据设置为特征事件,护理活动和其他课程?改型可以吗?还是我必须在响应时手动完成?改型自行处理。你只需要包括所有你需要的类,并给出改型基类。我已经在答案中包括了这个例子。您可以使用示例对象访问特征事件、趋势事件和其他您想要的类;System.out.println(“adasd”+homeData.get(0.GetVinces().getQty().toString());这是给空指针错误
       Call<Example> call = api.getExample(token);
        call.enqueue(new Callback<Example>() {
            @Override
            public void onResponse(Call<Example> call, Response<Example> response) {
                Example example = response.body();
                // use example object to get any value you want
    
            } 
    
            @Override
            public void onFailure(Call<HyperResponse> call, Throwable t) {
                if (t != null && t.getMessage() != null)
                    Log.e("Failure", "Example Failure" + t.getMessage());
            }
        });