0
您好我想從我的REST API,以我的應用程序進行更新日誌列表,但我有一些問題與此錯誤路線在這裏:預計BEGIN_ARRAY但BEGIN_OBJECT JSON
預計BEGIN_ARRAY但行1列是BEGIN_OBJECT 2路$
的JSON輸出:
{
"forced": "true",
"version": "1.0A(125)",
"description": [
{
"description": "Fixed some things 1"
},
{
"description": "Fixed some things 2"
},
{
"description": "Fixed some things 3"
},
{
"description": "Fixed some things 4"
}
]
}
我的REST調用:
@GET("updatecheck")
Observable<List<UpdateCheckResponse>> UpdateCheckChangeLog();
這是我命名POJO類:UpdateCheckResponse.java
public class UpdateCheckResponse {
@SerializedName("forced")
@Expose
private String forced;
@SerializedName("version")
@Expose
private String version;
@SerializedName("description")
@Expose
private List<UpdateCheckDescription> description = null;
public String getForced() {
return forced;
}
public void setForced(String forced) {
this.forced = forced;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public List<UpdateCheckDescription> getDescription() {
return description;
}
public void setDescription(List<UpdateCheckDescription> description) {
this.description = description;
}
}
我的POJO命名:UpdateCheckDescription.java
public class UpdateCheckDescription {
@SerializedName("description")
@Expose
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
UpdateChangeLogAdapter.class
public class UpdateChangeLogAdapter extends RecyclerView.Adapter<UpdateChangeLogAdapter.ViewHolder> {
private ArrayList<UpdateCheckDescription> mAndroidList;
public UpdateChangeLogAdapter(ArrayList<UpdateCheckDescription> androidList) {
mAndroidList = androidList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_update, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTvChangelog.setText(mAndroidList.get(position).getDescription());
}
@Override
public int getItemCount() {
return mAndroidList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView mTvChangelog;
public ViewHolder(View view) {
super(view);
mTvChangelog = (TextView)view.findViewById(R.id.descriptionTextView);
}
}
}
這裏是從我的UpdateActivity通話等級:
private void loadJSON() {
FitnessM8REST apiService =
FitnessM8RestClient.getClient().create(FitnessM8REST.class);
mCompositeDisposable.add(apiService.UpdateCheckChangeLog()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(this::handleResponse,this::handleError));
}
private void handleResponse(List<UpdateCheckResponse> androidList) {
mAndroidArrayList = new ArrayList<>(androidList);
mAdapter = new UpdateChangeLogAdapter(mAndroidArrayList);
mRecyclerView.setAdapter(mAdapter);
}
private void handleError(Throwable error) {
Toast.makeText(this, "Error "+error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
Log.d("Error: ", error.getLocalizedMessage());
}
錯誤消息非常明瞭。你告訴它在響應中期望有一個JSON數組,但它卻接收到了一個JSON對象。 –
檢查此:https://stackoverflow.com/a/38351872/6021469 –