只读第一层JSON

Reading only the first level of JSON

我有一个包含 2 级 JSON 字符串的数据集。这是我的 json 的示例:

 "{"field1":"AAA","field2":{"subField1":"000","subField2":"111"},"value":100.0}"

当我使用 Spark 数据集的 read().json() 函数解析它时,我得到以下结果:

 field1, field2, value 
 AAA, [000,111], 100.0

我想找到一种方法来设置我的数据集 Reader,以便它只解析我的 JSON 的第一级,给出以下结果:

field1, field2, value 
AAA, {"subField1":"000","subField2":"111"}, 100.0

我怎样才能做到这一点?

您可以通过显式定义模式轻松实现此目的

val schema = StructType(Array(StructField("field1",StringType,true),StructField("field2",StringType,true),StructField("value",StringType,true)))
val df = spark.read.schema(schema).json("path.json")
df.show(false)