在Scala中,可以使用Fastjson库处理JSON数据。要遍历打印Fastjson中的JSONObject所有的Key和Value,可以通过递归方式遍历,并使用getOrDefault方法逐一输出其中的键值对。
代码如下,:
import com.alibaba.fastjson.JSONObject
object Main extends App {
val jsonString =
"""
|{
| "name": "Tom",
| "age": 28,
| "sex": "male",
| "address": {
| "province": "Beijing",
| "city": "Haidian"
| }
|}
|""".stripMargin // 定义JSON字符串
val json = JSONObject.parseObject(jsonString) // 将字符串解析为JSON对象
printJson(json)
// 递归遍历JSONObject并输出其中的键值对
def printJson(json: JSONObject): Unit = {
import scala.collection.JavaConverters._
json.entrySet.asScala.foreach((entry) => {
// 转换Map.Entry为Scala中的Tuple2,并调用foreach方法逐一遍历map中的键值对
print(entry.getKey + ":") // 输出key
print(entry.getValue.toString) // 输出value
println()
entry.getValue match {
// 对于嵌套的JSONObject或JSONArray,需要递归调用printJson函数来输出其中的键值对
case obj: JSONObject =>
printJson(obj)
case _ =>
}
})
}
}
注意,在递归遍历JSONObject时,需要使用match匹配JSONObject类型的值,并调用asScala方法将JSONObject中的Java集合转换为Scala集合。同时还要注意处理嵌套的JSONObject和其他类型的值。