gpt4 book ai didi

json - 将 JSArray 对象解析为 Scala Play 中的对象列表

转载 作者:行者123 更新时间:2023-12-01 09:56:42 26 4
gpt4 key购买 nike

我有以下 JSON:

[{"id_str":"67979542","name":"account"}, {"id_str":"12345678","name":"account2"}, {"id_str":"3423423423","name":"account3"}]



它已被解析为具有 3 个元素的 play.api.libs.json.JsArray 对象。

我想使用以下代码将此 JsArray 解析为我的自定义对象 Group:
 case class Group(id: String, name: String)

implicit val twitterGroupReads: Reads[Group] = (
(JsPath \\ "id_str").read[String] and
(JsPath \\ "name").read[String]
)(Group.apply _)

但我不知道如何使用库从数组中获取所有元素并将它们解析为我的自定义对象。

最佳答案

Play JSON 框架具有用于处理 JSON 的 a number of built-in objects,其中包括 Reads.traversableReads ,它将被隐式用于反序列化其他类型的集合,其中可以隐式找到 Reads 对象。你写了一个合适的 Reads 对象。所以除非我遗漏了什么,否则你很高兴:

scala> import play.api.libs.json._
import play.api.libs.json._

scala> import play.api.libs.functional.syntax._
import play.api.libs.functional.syntax._

scala> case class Group(id: String, name: String)
defined class Group

scala> implicit val twitterGroupReads: Reads[Group] = (
| (JsPath \\ "id_str").read[String] and
| (JsPath \\ "name").read[String]
| )(Group.apply _)
twitterGroupReads: play.api.libs.json.Reads[Group] = play.api.libs.json.Reads$$anon$8@f2fae02

scala> val json = Json.parse("""[{"id_str":"67979542","name":"account"}, {"id_str":"12345678","name":"account2"}, {"id_str":"3423423423","name":"account3"}]""")
json: play.api.libs.json.JsValue = [{"id_str":"67979542","name":"account"},{"id_str":"12345678","name":"account2"},{"id_str":"3423423423","name":"account3"}]

scala> json.as[Seq[Group]]
res0: Seq[Group] = List(Group(67979542,account), Group(12345678,account2), Group(3423423423,account3))

关于json - 将 JSArray 对象解析为 Scala Play 中的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com