RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 863912
Accepted
Антон Лялин
Антон Лялин
Asked:2020-08-03 17:51:29 +0000 UTC2020-08-03 17:51:29 +0000 UTC 2020-08-03 17:51:29 +0000 UTC

如何使用改造解析嵌套数组?

  • 772

有 json,它有一个嵌套数组payments,如何使用它来解析它retrofit?

"credits": [

  {

    "name": "Кредит Выгодный",

    "contractNumber": 4666888,

    "openedDate": "2018-02-09T21:58:57+00:00",

    "nextPaymentDate": "2018-05-11T05:58:57+00:00",

    "nextPaymentAmount": 8900,

    "percent": 15.4,

    "amount": 125000,

    "currency": "rur",

    "status":"active",

    "payments": [

      {

        "paymentDate": "2018-03-09T21:58:57+00:00",

        "paymentAmount": 3400,

        "status": "paid"

      },

      {

        "paymentDate": "2018-04-09T21:58:57+00:00",

        "paymentAmount": 3700,

        "status": "paid"

      },

      {

        "paymentDate": "2018-05-09T21:58:57+00:00",

        "paymentAmount": 4400,

        "status": "skipped"

      },

      {

        "paymentDate": "2018-06-09T21:58:57+00:00",

        "paymentAmount": 4400,

        "status": "future"

      }

    ]

  },

对于我credits创建class Credits { //данные (id, name, и т.д.)},如果我创建相同的payments,那么它很简单null或发生错误

java.lang.IllegalStateException: 
Expected BEGIN OBJECT but was BEGIN_ARRAY at line 4 column 14 path $.result

public abstract class BaseProducts {

@NonNull
@SerializedName("name")
private String name;
@NonNull
@SerializedName("openedDate")
private Date openedDate;
@SerializedName("amount")
private Double amount;
@NonNull
@SerializedName("currency")
private String currency;
@Nullable
@SerializedName("status")
private String status;

public class Credits extends BaseProducts {

@SerializedName("contractNumber")
private Long contractNumber;
@NonNull
@SerializedName("nextPaymentDate")
private Date nextPaymentDate;
@SerializedName("nextPaymentAmount")
private Double nextPaymentAmount;
@NonNull
@SerializedName("percent")
private Double percent;
}

public class Payments extends BaseProducts {

@NonNull
@SerializedName("paymentDate")
private Date paymentDate;
@SerializedName("paymentAmount")
private Double paymentAmount;
}

public class ApiResponse<T> {

@SerializedName("resultCode")
private int resultCode;
@SerializedName("error")
private String error;
@SerializedName("result")
private T result;
}

public class ProductResponse {
@SerializedName("credits")
private List<Credits> credits = null;
@SerializedName("payments")
private List<Payments> payments = null;
}

public interface BankApi {
@GET(EnumsUrl.URL_PRODUCTS)
Single<ApiResponse<ProductResponse>> getProductsSingle();
}
android
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Антон Лялин
    2020-08-03T19:57:33Z2020-08-03T19:57:33Z

    一般来说,你需要使用JsonPojo,它会构建正确的结构

    • 1
  2. Романыч
    2020-08-03T23:05:17Z2020-08-03T23:05:17Z

    您需要使用生成器制作一个普通的 POJO,然后可能使用句柄对其进行编辑。然后只需用注释指示您需要绘制的内容。要访问嵌套数组payments,您需要在其中创建嵌套类"credits"

    实际上,这里 是同样的问题,同样的问题。事实上,没有什么复杂的。

    • 1
  3. Best Answer
    maximot
    2020-08-04T15:14:32Z2020-08-04T15:14:32Z

    您只需要将 List 从 ProductResponse 类转移到 Credits 类(即使模型与 JSON 本身的结构保持一致)

    产品响应类:

    public class ProductResponse {
        @SerializedName("credits")
        private List<Credits> credits = null;
    }
    

    课程学分:

    public class Credits extends BaseProducts {
    
        @SerializedName("contractNumber")
        private Long contractNumber;
        @NonNull
        @SerializedName("nextPaymentDate")
        private Date nextPaymentDate;
        @SerializedName("nextPaymentAmount")
        private Double nextPaymentAmount;
        @NonNull
        @SerializedName("percent")
        private Double percent;
        @SerializedName("payments")
        private List<Payments> payments = null;
    }
    

    一般来说,POJO最好不要使用继承

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5