使用Scala从List [Row]获取Json Key值

时间:2018-06-13 07:52:39

标签: scala list row

我们说我有一个列表[行],例如{"name":"abc,"salary","somenumber","id":"1"},{"name":"xyz","salary":"some_number_2","id":"2"}

如何使用scala获取JSON键值对。让我们假设我想得到关键的价值"薪水"。是下面的一个吗?

val rows = List[Row] //Assuming that rows has the list of rows

for(row <- rows){
   row.get(0).+("salary")
}

2 个答案:

答案 0 :(得分:0)

使用Spray Json:

import spray.json._
import DefaultJsonProtocol._

object sprayApp extends App {
  val list = List("""{"name":"abc","salary":"somenumber","id":"1"}""", """{"name":"xyz","salary":"some_number_2","id":"2"}""")
  val jsonAst = list.map(_.parseJson)
  for(l <- jsonAst) {
    println(l.asJsObject.getFields("salary")(0))
  }
}

答案 1 :(得分:0)

如果您有List[Row],我认为您已经拥有DataFrame并且您collectAsList。如果您collect / collectAsList表示您

  1. 不能再使用Spark SQL操作
  2. 无法在群集中的节点上并行运行计算。此时,所有内容都在驱动程序中执行。
  3. 我建议将其保存为DataFrame然后执行:

    val salaries = df.select("salary")
    

    然后,您可以对工资进行进一步计算,show他们或collect或将他们留在某处。

    如果您选择使用DataSet(类似于键入的DataFrame),那么您可以

    val salaries = dataSet.map(_.salary)