gpt4 book ai didi

json - 将 RDD 转换为 JSON 对象

转载 作者:行者123 更新时间:2023-12-02 01:35:39 24 4
gpt4 key购买 nike

我有一个 RDD[(String, List[String])] 类型的 RDD。

示例:

(FRUIT, List(Apple,Banana,Mango))
(VEGETABLE, List(Potato,Tomato))

我想将上面的输出转换为 json 对象,如下所示。

{
"categories": [
{
"name": "FRUIT",
"nodes": [
{
"name": "Apple",
"isInTopList": false
},
{
"name": "Banana",
"isInTopList": false
},
{
"name": "Mango",
"isInTopList": false
}
]
},
{
"name": "VEGETABLE",
"nodes": [
{
"name": "POTATO",
"isInTopList": false
},
{
"name": "TOMATO",
"isInTopList": false
},
]
}
]
}

请建议最好的方法。

注意:"isInTopList": false 始终是常量,并且必须与 jsonobject 中的每个项目一起存在。

最佳答案

首先,我使用以下代码重现您提到的场景:

val sampleArray = Array(
("FRUIT", List("Apple", "Banana", "Mango")),
("VEGETABLE", List("Potato", "Tomato")))

val sampleRdd = sc.parallelize(sampleArray)
sampleRdd.foreach(println) // Printing the result

现在,我正在使用json4s Scala 库将此 RDD 转换为您请求的 JSON 结构:

import org.json4s.native.JsonMethods._
import org.json4s.JsonDSL.WithDouble._

val json = "categories" -> sampleRdd.collect().toList.map{
case (name, nodes) =>
("name", name) ~
("nodes", nodes.map{
name => ("name", name)
})
}

println(compact(render(json))) // Printing the rendered JSON

结果是:

{"categories":[{"name":"FRUIT","nodes":[{"name":"Apple"},{"name":"Banana"},{"name":"Mango"}]},{"name":"VEGETABLE","nodes":[{"name":"Potato"},{"name":"Tomato"}]}]}

关于json - 将 RDD 转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com