【问题标题】:Polymorphic deserialisation多态反序列化
【发布时间】:2021-02-06 21:50:12
【问题描述】:

我试图在 spring 中调用一个 API,它有两种类型的响应结构

成功响应:

{
    "Response": {
        "SubHeader": {
            "requestUUID": "ABC12345678-9x",
            "serviceRequestId": "HI",
            "serviceRequestVersion": "1.0",
            "channelId": "ABC"
        },
        "BodyEncrypted": "OOnpBMVUq6nw/3UesG/L0+lUT0hjOlCYJI064JaAqJvqYYY2bnENE5T/AxOBuoNPUer/W1ioIyDNpj/8cCHzXk5gXF1Cd50gMuGuErlGUogn0Z8hA05q3mygHaf1eb1EiX8qpv1Ke+7I7jw5ds7YsWPuJtXXhhkL0ShrKUimNs0B2OoQxbgH434+JEBvhRa4kcnUvZF68kmgp74k46RUGRbnMUqBEMC5iNMSm0oQgeg="
    }
}

失败响应:

{
    "httpCode": 403,
    "httpMessage": "Forbidden",
    "errorCode": "B001007",
    "moreInformation": "Unable to fetch details"
}

Feign 客户端:

fun generateDetails(
            @RequestHeader clientId: String,
            @RequestBody body: RequestDto
    ): ResponseDto

谁能帮助我了解如何制作 DTO 以便处理这两种情况的响应。我尝试使用 Polymorphism,但似乎没有去工作。我对使用多态反序列化感到困惑。基本上,我想做一个通用的响应 DTO 并处理这两种情况。

【问题讨论】:

  • 一种直接的方法是设计具有“响应”和“httpCde”等的 DTO。根据响应,应填充所需的属性,不存在的属性将保持为空。你可以试试看。

标签: java spring jackson deserialization spring-cloud-feign


【解决方案1】:

您可以引用嵌套的 JSON 映射而不是多态。要映射嵌套的 json 值,请参考链接 here

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
猜你喜欢
  • 2011-05-03
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多