【问题标题】:Combine JSON with same value into JSON array - Scala将具有相同值的 JSON 组合到 JSON 数组中 - Scala
【发布时间】:2020-12-29 02:26:06
【问题描述】:

我已使用toJSON 将包含电子邮件、帐户、id 列的数据框转换为 json。每行都是一个 JSON,如下所示:{"email": "xyz", "account": "pqr", "id": "1"}

id 字段不是唯一的,我想将此 JSON 数组组合成 JSON 数组数组,这样每一行都是具有相同 id 值的 JSON 数组。

例如:一行看起来像:[{"email": "xyz", "account": "pqr", "id": "1"},{"email": "abc", "account": "lmn", "id": "1"}]

在此之后,我想将此 JSON 数组填充到另一个数据框 user 中,其中包含列 id 和 user。 与 id 匹配的每个用户的 JSON 数组应该在 user 数据帧中。

O/p 将是每一行:| 1 | [{"email": "xyz", "account": "pqr", "id": "1"},{"email": "abc", "account": "lmn", "id": "1"}] |

有人可以建议我如何在不多次爆炸所有数组的情况下有效地做到这一点吗?

【问题讨论】:

    标签: arrays json scala


    【解决方案1】:

    我不确定您使用的是哪个 JSON 库,因此我建议转换为具有 id 字段的案例类。然后,您可以按 id 字段分组,然后插入您的 user 数据框,将分组的行转换为 JSON。

    类似于...的东西

    case class Row(email: String, account: String, id: String)
    
    val rows: List[Row] = ??? // converted from your dataframe
    
    rows.groupBy(_.id)
      .map { case (id, rows) =>
        // insert into user dataframe. Convert rows to JSON
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多