【问题标题】:How to create a POJO class for dynamic data type of field in Java?如何在 Java 中为字段的动态数据类型创建 POJO 类?
【发布时间】:2021-08-21 10:59:06
【问题描述】:

我有一个动态 JSON 响应。

如果用户只有一个地址,则 JSON 响应如下:-

{
  "firstName": "Amod",
  "lastName": "Mahajan",
  "profession": "Software Tester",
  "address": {
    "houseNo": 404,
    "streetName": "Not found",
    "city": "Bengaluru",
    "state": "KA",
    "country": "IN"
  }
}

如果用户有多个地址,则 JSON 响应如下:-

{
  "firstName": "Amod",
  "lastName": "Mahajan",
  "profession": "Software Tester",
  "address": [
    {
       "houseNo": 404,
       "streetName": "Not found",
       "city": "Bengaluru",
       "state": "KA",
       "country": "IN"
   },
   {
  "houseNo": 204,
  "streetName": "No Content",
  "city": "Delhi",
  "state": "DL",
  "country": "IN"
   }
 ]
}

如何创建一个可以同时容纳两者的 POJO?如果我为地址部分创建一个 POJO,那么首先我需要有“地址地址”,第二个需要“列表地址”。我希望它在单个 pojo 中,可以动态容纳两者。

【问题讨论】:

  • 为什么你会改变响应的 JSON 结构......告诉那些为你提供这些 API 的人来学习 REST 和基本 API 使用......试试这样stackoverflow.com/questions/37164399/…跨度>
  • 只需使用List。如果 JSON 中有一个条目,那么您的 List 将包含一个元素。也许您必须编写一个可以区分这两种情况的自定义反序列化器。

标签: java pojo


【解决方案1】:

我认为与键“地址”的类型对应的值应始终声明为类型array,尽管它只有一个元素。 如果您不想更改 JSON 结构, POJO类声明如下代码。

public class Person {
    // omit other fields and getter and setter.
    List<Address> addressInfo;
}

我们可以看到,我们可以用List来表示一个或多个地址信息,也可以用Address[]来表示。

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 2022-10-14
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多