json - 将字符串列保存为真正的 Json 值 - Scala
问题描述
我有一个用例,其中列的架构是字符串,但它实际上是一个 json(例如“”“{“a”:“b”}“””)。例如:
scala> val list = List("a" -> """ {"a":"b","c":"d"} """, "b" -> """ {"foo" : "bar"} """)
list: List[(String, String)] = List((a," {"a":"b","c":"d"} "), (b," {"foo" : "bar"} "))
scala> val df = list.toDF("colA","colB")
df: org.apache.spark.sql.DataFrame = [colA: string, colB: string]
scala> df.show(2,false)
+----+-------------------+
|colA|colB |
+----+-------------------+
|a | {"a":"b","c":"d"} |
|b | {"foo" : "bar"} |
+----+-------------------+
我需要将 df 写为 json 但对于 colB 我需要输出真正的 json 而不是字符串。例如,如果我这样做:
scala> df.repartition(1).write.json("/Users/myuser/sparkjson/3")
我以字符串形式进入 json 文件 colB:
{"colA":"a","colB":" {\"a\":\"b\",\"c\":\"d\"} "}
{"colA":"b","colB":" {\"foo\":\"bar\"} "}
但我想要的是为 colB 输出真正的 json(而不是字符串)。所以像:
{"colA":"a","colB": {"a":"b","c":"d"} }
{"colA":"b","colB": {"foo":"bar"} }
不幸的是,我没有 colB 的架构,它可以是任何有效的 json。我如何实现这一目标?
解决方案
对此解决方案不太确定,但可以尝试添加如下选项 -
scala> df.repartition(1).write.option("escapeQuotes","false").json("/Users/myuser/sparkjson/3")
推荐阅读
- xpages - XPages 主题未加载新的 CSS 文件
- android - android.view.inflateexception 二进制 xml 文件行 #306:错误膨胀类指南
- django - 如何在 django url 中传递请求
- sql - Oracle - 连接三个表并获取记录
- javascript - 在 ReactJS 中检索返回的 POST 数据
- javascript - 如何从函数参数中指定的json数组中获取密钥而不循环?
- java - 使用 toString 打印结果数组
- excel - 使用单元格语法时被调用者拒绝调用
- networking - GCE 实例无法访问 - 连接:网络无法访问
- php - 生产中的 Docker + symfony 资产 404 + nginx