首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala按顺序解析json对象

scala按顺序解析json对象
EN

Stack Overflow用户
提问于 2018-09-20 22:35:17
回答 1查看 409关注 0票数 1

我有以下json输入,我试图按顺序解析name字段。

代码语言:javascript
复制
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")

我试着把这些名字按顺序排列

代码语言:javascript
复制
List("FASHION", "ACCESSORIES AND TRAVEL", "FASHION ACCESSORIES", "MENS FASHION ACCESSORIES", "MENS HATS")

是否有办法通过play Json库实现这一目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 15:57:27

对于Play JSON,我总是使用case classes。所以你的例子应该是:

导入play.api.libs.json._

代码语言:javascript
复制
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")
}

这给了你,是你可以排序结果的关键-信息丢失在你的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52434254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档