无法在android中使用改型和Java创建POJO

无法在android中使用改型和Java创建POJO,java,android,retrofit2,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",

我从一个供应商那里得到以下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

我使用的是改型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];
    }
};
}
公共类HistoricalDataContainer实现了Parcelable{
公共字符串状态;
公共烛光数据;
受保护的历史数据容器(中的包裹){
status=in.readString();
data=in.readParcelable(CandleList.class.getClassLoader());
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地记录(状态);
可写入目标(数据、标志);
}
@凌驾
公共int描述内容(){
返回0;
}
公共静态最终创建者=新创建者(){
@凌驾
public HistoricalDataContainer createFromParcel(中的地块){
返回新的HistoricalDataContainer(在中);
}
@凌驾
public HistoricalDataContainer[]newArray(整数大小){
返回新的HistoricalDataContainer[size];
}
};
}

public类烛光列表实现可包裹{
public ArrayList values=new ArrayList();//不起作用
public ArrayList values=new ArrayList();//不起作用
公共ArrayList[]值;//不起作用
受保护烛光台(包裹内){
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
}
@凌驾
公共int描述内容(){
返回0;
}
公共静态最终创建者=新创建者(){
@凌驾
公共烛光列表createFromParcel(包裹中){
返回新的烛光列表(in);
}
@凌驾
公共烛光列表[]新数组(整数大小){
返回新的烛光列表[大小];
}
};
}
但是在上面的代码中,“value”总是空的。
我遗漏了什么。

您可以尝试JSON映射。它是一个从现有JSON响应创建模型的好工具。为了快速实现Parcelable to existing类,您可以使用

您缺少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;
  }
}
为了与POJO上的所有对象匹配,您必须定义与您的“状态”匹配的对象:“成功”、“数据”、“值”来自Json文件。 您可以阅读更多有关本教程的内容


我还举了一个例子。

首先需要识别JSON结构中的对象,在本例中有两个。1。您正在接收的json和2<代码>数据。 选项是为每个对象创建一个类

第一个类包含主对象(json本身)及其主要属性:
status
data

public class HistoricalDataContainer implements Parcelable {
    private string status;
    private Data data;
    setters - getters
    ...
}
数据是一个对象,因此您需要创建他自己的类来处理他的属性,在本例中是一个带有字符串数组的数组

    public class Data implements Parcelable {
            private List<String> values;
            setters - getters
            ...
        }
公共类数据实现可包裹{
私有列表值;
二传手
...
}
要在值中获取特定数组,您需要执行以下操作:

List<String> myStringArray = historicalDataContainer.getData().values().get(index);
List myStringArray=historicalDataContainer.getData().values().get(索引);

您为什么要使用
包裹?

。。。
我希望这个答案是你需要的

我也试过了,但没用:)。谢谢你的建议。你实施了改造回调吗?哦,是的,其他的都很好,所有其他的请求、响应和处理都很好,除了这个。你在响应中收到了什么?你能把留言放在这里吗。有一些错误吗?。始终可以看到是否调试回调,响应代码是否正确,以及哪些信息。你能分享一下吗?上面的帖子就是我得到的回复。空指针异常。它说“values”是空的。是的,我读到了,但我说的是回调实现和response.body(),还检查response.code(),在那里你知道真正的改造接收什么。不一定,如果变量名和json键相同,这就行得通。但只有在这种情况下,例如,我们接收email_id作为json键,并使用emailID作为变量,在这种情况下,我们必须使用@SerializedName。谢谢你的努力。
List<String> myStringArray = historicalDataContainer.getData().values().get(index);