![](/img/trans.png)
[英]Accessing a Single Value from Parsed JObject in Scala (Jackson, json4s)
[英]How I can sort list of JObject (Scala, json4s)
我读了一个 JSON 文件并使用 json4s 来解析 JSON。
如何对从文件中读取的 JObject 数组进行排序?
package org.example
import org.json4s._
import org.json4s.native.JsonMethods._
object Main extends App {
val file = scala.io.Source.fromURL("https://raw.githubusercontent.com/mledoze/countries/master/countries.json")
val text = file.mkString
val json = parse(text)
val countries = json.children
countries.sortBy(...)
}
每个国家/地区都有一个字段“区域”,我需要按此字段对列表进行排序。 我不知道在这种情况下如何使用 sortBy,因为该国不只是一些 class 的 object。 这是 JObject,字段“area”的类型为 JInt。
你能帮助我吗? 或者,也许您知道其他解决方案?
谢谢,Gaël J 的提示。
我解决了我的问题如下:
package org.example
import org.json4s._
import org.json4s.native.JsonMethods._
object Main extends App {
val file = scala.io.Source.fromURL("https://raw.githubusercontent.com/mledoze/countries/master/countries.json")
val text = file.mkString
val json = parse(text)
val countries = json.children
val countriesSorted = countries.sortWith((x: JValue, y: JValue) => {
//File has a few countries with area that has type of Double
def getValue(value: JValue): Double = {
value \ "area" match {
case JDouble(value) => value
case JInt(value) => value.toDouble
case _ => 0
}
}
val xValue = getValue(x)
val yValue = getValue(y)
xValue > yValue
})
for (country <- countriesSorted)
println(country \ "area")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.