带有未命名列表的 Pojo
Pojo with unnamed list
我有一个 link 到 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 图片列表
看起来您的响应是顶层的 JSON 数组,这意味着 没有 顶层响应对象。您只有 "inner" 个响应对象的列表。
所以你需要一并删除这个class:
public class ObjectsListResponse {
@SerializedName("")
List<ObjectResponse> any;
public List <ObjectResponse> getAny() {
return any;
}
}
并将您的 Call
对象更改为 Call<List>
。所以替换这个:
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) {
...
}
});
我有一个 link 到 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 图片列表
看起来您的响应是顶层的 JSON 数组,这意味着 没有 顶层响应对象。您只有 "inner" 个响应对象的列表。
所以你需要一并删除这个class:
public class ObjectsListResponse { @SerializedName("") List<ObjectResponse> any; public List <ObjectResponse> getAny() { return any; } }
并将您的 Call
对象更改为 Call<List>
。所以替换这个:
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) {
...
}
});