case classes
和一个
Dataset
而不是压平
DF
然后再次尝试转换成旧的
json
格式。即使它有嵌套对象,也可以定义一组
案例类别
投下它。它允许您使用对象表示法,使事情比
测向
.
有一些工具可以提供
json文件
它会为你生成类(我用这个:
https://json2caseclass.cleverapps.io
).
如果你想把它从
测向
,另一种方法是创建
使用
map
在你的
测向
. 像这样:
case class NestedNode(fieldC: String, fieldD: String) // for JSON
case class MainNode(fieldA: String, fieldB: NestedNode) // for JSON
case class FlattenData(fa: String, fc: String, fd: String)
Seq(
FlattenData("A1", "B1", "C1"),
FlattenData("A2", "B2", "C2"),
FlattenData("A3", "B3", "C3")
).toDF
.as[FlattenData] // Cast it to access with object notation
.map(flattenItem=>{
MainNode(flattenItem.fa, NestedNode(flattenItem.fc, flattenItem.fd) ) // Creating output format
})
最后,用类定义的模式将由
yourDS.write.mode(your_save_mode).json(your_target_path)