【问题标题】:Pojo with unnamed list带有未命名列表的 Pojo
【发布时间】:2018-11-05 11:38:11
【问题描述】:

我有一个指向 JSON 列表的链接,我想将它加载到我的 RecycleView(android) 中。我已经完成了相同的列表,但它们通常有一个名称(列表结果 - 示例)。 我尝试使用带有引用的列表制作 POJO,但它不起作用,尽管正在加载大量数据 - 在日志中。

public class MainActivity extends AppCompatActivity {
  TextView tvName;
  Call<ObjectsListResponse> call;
  private final OAuthService service = RestApi.createService(OAuthService.class);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.item);
    tvName = findViewById(R.id.tvName);

    call = service.getListCities();
    call.enqueue(new Callback<ObjectsListResponse>(){
        @Override
        public void onResponse(Call<ObjectsListResponse> call, Response<ObjectsListResponse> response){
            ObjectsListResponse objectListResponse = response.body();
            tvName.setText(objectListResponse.getAny().get(0).getName());

        }
        @Override
        public void onFailure(Call <ObjectsListResponse> call, Throwable t) {
            if(call.isCanceled()) {
                Toast.makeText(MainActivity.this, R.string.error, Toast.LENGTH_SHORT).show();
            }
        }
    });

}

}`

public class ObjectsListResponse {
@SerializedName("")
List<ObjectResponse> any;

public List <ObjectResponse> getAny() {
    return any;
}

}

public class ObjectResponse {
@SerializedName("_entityName")
private String entityName;
@SerializedName("_instanceName")
private String instanceName;
@SerializedName("id")
private String id;
@SerializedName("name")
private String name;
@SerializedName("version")
private String version;

public String getEntityName() {
    return entityName;
}

public String getInstanceName() {
    return instanceName;
}

public String getId() {
    return id;
}


public String getName() {
    return name;
}

public String  getVersion() {
    return version;
}

}

不带名称的 JSON 列表

带图像的 JSON 列表

【问题讨论】:

  • jsonschema2pojo。使用此站点为您创建 POJO 类。
  • 我已经用过了,不客气。它为一个对象创建了 POJO 类,但我需要 pojo 作为列表,每个对象都没有名称,

标签: android rest pojo


【解决方案1】:

看起来您的响应是顶层的 JSON 数组,这意味着 没有 顶层响应对象。你只有一个“内部”响应对象的列表。

所以你需要完全删除这个类:

public class ObjectsListResponse {

    @SerializedName("")
    List<ObjectResponse> any;

    public List <ObjectResponse> getAny() {
        return any;
    }
}

并将您的 Call 对象更改为 Call&lt;List&gt;。所以替换这个:

Call<ObjectsListResponse> call;

call.enqueue(new Callback<ObjectsListResponse>(){
    @Override
    public void onResponse(Call<ObjectsListResponse> call, Response<ObjectsListResponse> response){
        ...
    }
    @Override
    public void onFailure(Call<ObjectsListResponse> call, Throwable t) {
        ...
    }
});

用这个:

Call<List<ObjectResponse>> call;

还有这个

call.enqueue(new Callback<ObjectsListResponse>(){
    @Override
    public void onResponse(Call<List<ObjectResponse>> call, Response<List<ObjectResponse>> response){
        ...
    }
    @Override
    public void onFailure(Call<List<ObjectResponse>> call, Throwable t) {
        ...
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多