【问题标题】:How i create array from arraylist key & value in kotlin?如何从 kotlin 中的 arraylist 键和值创建数组?
【发布时间】:2021-05-27 14:15:21
【问题描述】:

我的回复在数组列表下方,现在我想通过 ** job_date** 键制作新的数组列表

"request": [
  {
    "id": 3,
    "company_id": 40,
    "job_id": 23,
    "job_date": "2021-07-22",
    "first_name": "Larry",
    "last_name": "P"
  },
  {
    "id": 8,
    "company_id": 44,
    "job_id": 27,
    "job_date": "2021-07-22",
    "first_name": "Larry",
    "last_name": "P"
  },
  {
    "id": 16,
    "company_id": 4,
    "job_id": 2,
    "job_date": "2021-07-01",
    "first_name": "Larry",
    "last_name": "P"
  }
]

我想要像下面这样的输出,数组中的相同日期数据

{
"2021-07-2": [
  {
    "id": 3,
    "company_id": 40,
    "job_id": 23,
    "first_name": "Larry",
    "last_name": "P"
  },
  {
    "id": 8,
    "company_id": 44,
    "job_id": 27,
    "first_name": "Larry",
    "last_name": "P"
  }
],
{
"2021-07-1": [
  {
    "id": 16,
    "company_id": 4,
    "job_id": 2,
    "first_name": "Larry",
    "last_name": "P"
  }
]

如果有人对这种类型的 ArrayList 过滤器有任何想法,请评论您的答案。 提前致谢

【问题讨论】:

    标签: android kotlin arraylist filter


    【解决方案1】:

    我简化了数据模型,但 groupBy 可以工作。

    data class DatedRequest(val id: Int, val jobDate: String)
    data class Request(val id: Int)
    
    fun main() {
        val list = listOf(
            DatedRequest(1, "2021"),
            DatedRequest(2, "2021"),
            DatedRequest(3, "2020")
        )
    
        list.groupBy({ it.jobDate }, { Request(it.id) })
            .also(::print)
    }
    

    打印结果

    {2021=[Request(id=1), Request(id=2)], 2020=[Request(id=3)]}
    

    【讨论】:

      【解决方案2】:

      你可以试试这个代码。 首先,将 JSON 响应转换为 jsonString(我们称之为响应)。

          ObjectMapper mapper = new ObjectMapper();
          ObjectNode objectNode = (ObjectNode) mapper.readTree(response);
          ObjectNode objectNode2 = mapper.createObjectNode();
              for (int i = 0; i < objectNode.get("request").size(); i++) {
                  String date = objectNode.get("request").get(i).get("job_date").asText().split(" ")[0];
                  ObjectNode node = (ObjectNode) ((ObjectNode) objectNode.get("request").get(i));
                  node.remove("job_date");
                  if (objectNode2.has(date)) {
                      ((ArrayNode) objectNode2.get(date)).add(node);
                  } else {
                      objectNode2.put(date, mapper.createArrayNode().add(node));
                  }
              }
              System.out.println(objectNode2.toString());
      

      确保您已验证您的 json

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 1970-01-01
        • 2013-07-05
        • 2016-12-31
        • 2021-06-01
        相关资源
        最近更新 更多