Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala按顺序解析json对象_Scala_Play Json - Fatal编程技术网

scala按顺序解析json对象

scala按顺序解析json对象,scala,play-json,Scala,Play Json,我有下面这个json输入,我试图按顺序解析name字段 scala> result res6: play.api.libs.json.JsValue = {"L0": {"name":"FASHION","id":"50000"},"L1":{"name":"ACCESSORIES AND TRAVEL","id":"51000"},"L2":{"name":"FASHION ACCESSORIES","id":"51001"},"L3":{"name":"MENS FASHION AC

我有下面这个json输入,我试图按顺序解析name字段

scala> result
res6: play.api.libs.json.JsValue = {"L0": 
{"name":"FASHION","id":"50000"},"L1":{"name":"ACCESSORIES AND TRAVEL","id":"51000"},"L2":{"name":"FASHION ACCESSORIES","id":"51001"},"L3":{"name":"MENS FASHION ACCESSORIES","id":"51100"},"L4":{"name":"MENS HATS","id":"51204"}}

scala> result \\ "name"
res5: Seq[play.api.libs.json.JsValue] = List("ACCESSORIES AND TRAVEL", "MENS HATS", "MENS FASHION ACCESSORIES", "FASHION ACCESSORIES", "FASHION")
我想把这些名字整理好

List("FASHION", "ACCESSORIES AND TRAVEL", "FASHION ACCESSORIES", "MENS FASHION ACCESSORIES", "MENS HATS")

有没有办法通过play Json库实现这一点?

对于play Json,我总是使用
案例类。因此,您的示例如下所示:

导入play.api.libs.json_

val json = """{"L0": 
{"name":"FASHION","id":"50000"},"L1":{"name":"ACCESSORIES AND TRAVEL","id":"51000"},"L2":{"name":"FASHION ACCESSORIES","id":"51001"},"L3":{"name":"MENS FASHION ACCESSORIES","id":"51100"},"L4":{"name":"MENS HATS","id":"51204"}}
"""

case class Element(id: String, name: String)
object Element {
  implicit val jsonFormat: Format[Element] = Json.format[Element]
}

Json.parse(json).validate[Map[String, Element]] match {
  case JsSuccess(elems, _) => println(elems.toList.sortBy(_._1).map(e => e._2.name))
  case other => println(s"Handle exception $other")
}

这给了您的是,您可以按键对结果进行排序—您的解决方案中丢失的信息。

您自己尝试过什么?是的。结果\\“name”是我现在拥有的。我正在尝试使用正则表达式来实现这一点,但我想知道是否有一种简单的方法可以使用play Json库。首先,请看一下文档,了解如何解析/验证