我收到来自其中一位供应商的以下 json 响应。
{
"status": "success",
"data": {
"values": [
[
"2015-12-28T09:15:00+0530",
1386.4,
1388,
1381.05,
1385.1,
788
],
[
"2015-12-28T09:15:00+0530",
1386.4,
1388,
1381.05,
1385.1,
788
]
]
}
}
我想将其转换为 POJO。
我正在使用 retrofit 2.0,rx java。
我试过跟随
public class HistoricalDataContainer implements Parcelable{
public String status;
public CandleList data;
protected HistoricalDataContainer(Parcel in) {
status = in.readString();
data = in.readParcelable(CandleList.class.getClassLoader());
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(status);
dest.writeParcelable(data, flags);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<HistoricalDataContainer> CREATOR = new Creator<HistoricalDataContainer>() {
@Override
public HistoricalDataContainer createFromParcel(Parcel in) {
return new HistoricalDataContainer(in);
}
@Override
public HistoricalDataContainer[] newArray(int size) {
return new HistoricalDataContainer[size];
}
};
}
和
public class CandleList implements Parcelable{
public ArrayList<ArrayList<String>> values = new ArrayList<>();// doesn't work
public ArrayList<String[]> values=new ArrayList<String[]>();// doesn't work
public ArrayList<String>[] values; // doesn't work
protected CandleList(Parcel in) {
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<CandleList> CREATOR = new Creator<CandleList>() {
@Override
public CandleList createFromParcel(Parcel in) {
return new CandleList(in);
}
@Override
public CandleList[] newArray(int size) {
return new CandleList[size];
}
};
}
但在上面的代码中,“值”始终为空。 我错过了什么。
最佳答案
您缺少 Gson 的注释样式。 例如:
public class LiveStreamResponse extends BaseResponse{
@SerializedName("live_stream")
@Expose
private LiveStream liveStream;
@SerializedName("meta")
@Expose
private Meta meta;
public LiveStream getLiveStream() {
return liveStream;
}
public void setLiveStream(LiveStream liveStream) {
this.liveStream = liveStream;
}
public Meta getMeta() {
return meta;
}
public void setMeta(Meta meta) {
this.meta = meta;
}
}
这有助于 Retrofit 匹配您的 POJO 上的所有对象,您必须定义哪些对象必须与您的“状态”匹配:Json 文件中的“成功”、“数据”、“值”。 您可以阅读有关遵循本教程的更多信息。 Consuming APIs with Retrofit
我也给你这个例子using xml and Json .
关于java - 无法在android中使用Retrofit和Java创建POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44763153/