java - 无法在android中使用Retrofit和Java创建POJO

标签 java android retrofit2 pojo

我收到来自其中一位供应商的以下 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/

相关文章:

java - 使用 JNI 将字符串从 Java 传递到 C++

java - Spring Maven依赖问题

Java文件删除错误

android - 在 this.state.message 中显示接收者消息

Android:发出 Https 请求

java - Android多线程-播放声音和响应的时间

Android 应用程序崩溃,没有任何堆栈跟踪错误

java - 表达非法开始 NB

java - 如何使用 Retrofit 2 返回对象

android - 如何处理改造中的两种不同响应