我正在尝试解析此 json 数据,然后读取 Orders 元素下的值。我的最终目标是读取 order 元素下的所有可用键,然后通过连接值创建一个字符串。例如,在“订单”下,我有 orderid、customerid 和 orderprice。我想要形成一个字符串,其值为“order_id,customers.customerIdorder.price.charge,
{"Orders":{"orderid":"order_id","customerId":"customers.customerId","orderprice":"order.price.charge"},"Products":{"productid":"product_id","productName":"products.productName"}}
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import spark.implicits._
import scala.util.parsing.json._
val jsonString="""{"Orders":{"orderid":"order_id","customerId":"customers.customerId","orderprice":"order.price.charge"},"Products":{"productid":"product_id","productName":"products.productName"}}""";
val json_data = JSON.parseFull(jsonString);
此后我无法迭代读取键并创建连接的字符串。有人可以帮忙吗。
您可以使用
com.lihaoyi:ujson_2.12:3.1.4,com.lihaoyi:upickle_2.12:3.1.4
Spark 选项导入 --package
。
spark-shell --packages "com.lihaoyi:ujson_2.12:3.1.4,com.lihaoyi:upickle_2.12:3.1.4"
val jsonString="""
{
"Orders": {
"orderid": "order_id",
"customerId": "customers.customerId",
"orderprice": "order.price.charge"
},
"Products": {
"productid": "product_id",
"productName": "products.productName"
}
}
"""
使用
json string
方法将 json
转换为 ujson.read
格式。
val data = ujson.read(jsonString)
下面是使用
,
提取其键和联系人值的代码。
data
.obj
.keys
.map{ key =>
Map(key -> data.obj(key).obj.values.map(_.str).mkString(","))
}
下面是输出并使用过滤器来过滤特定的键。
Set(Map(Orders -> order_id,customers.customerId,order.price.charge), Map(Products -> product_id,products.productName))