json - 从 JSON 字符串中获取值
问题描述
我有一个数据框,我正在尝试将数据转换为 JSON,以便我可以发送消息。
val df = Seq((123456, 40, "ABCD", "DEFG")).toDF("ID", "RunId", "Val1", "Val2")
val msgDf = df.select(struct("ID", "RunId", "Val1", "Val2").alias("message"))
msgDf.toJSON.show(false)
msgDf 的架构
message:struct
ID:integer
RunId:integer
Val1:string
Val2:string
我得到的输出是
+----------------------------------------------------------------+
|value |
+----------------------------------------------------------------+
|{"message":{"ID":123456,"RunId":40,"Val1":"ABCD","Val2":"DEFG"}}|
+----------------------------------------------------------------+
我只想捕获以下内容并将其作为消息发送
{"ID":123456,"RunId":40,"Val1":"ABCD","Val2":"DEFG"}
我怎样才能做到这一点?
解决方案
您可以使用to_json
方法作为
val df = Seq((123456, 40, "ABCD", "DEFG"))
.toDF("ID", "RunId", "Val1", "Val2")
val msgDf = df.select(to_json(struct("ID", "RunId", "Val1", "Val2")).as("message"))
或者干脆
df.select(to_json(struct(df.columns.map(col): _*)).alias("message"))
msgDf.show(false)
或者
Seq((123456, 40, "ABCD", "DEFG")).toDF("ID", "RunId", "Val1", "Val2")
.toJSON.show(false)
结果:
+----------------------------------------------------+
|message |
+----------------------------------------------------+
|{"ID":123456,"RunId":40,"Val1":"ABCD","Val2":"DEFG"}|
+----------------------------------------------------+
推荐阅读
- python - discord.py embed.image.url 中的无效表单正文:Scheme"
" 不支持 - android - 如何使用终端监听音量键事件?
- laravel - Laravel 获取值表单会话
- python - 从另一个成对创建新数据框
- android-studio - 由于“高分辨率图标”问题而拒绝 Google Play 商店让我抓狂?
- sql - SQL Server 按月分区使用持久列并同时创建聚集列存储索引
- python - 从 Jupiter Notebook (python) 中的另一个文件夹读取 CSV
- python - 使用请求会话登录网站的 BeautfulSoup 问题
- sql - 将 Y 转换为 12% 并将 N 转换为 0
- javascript - 创建具有特定参数类型的函数