Scala play api for JSON - 从字符串化 JSON 中获取某些情况下 class 的数组?
Scala play api for JSON - getting Array of some case class from stringified JSON?
在我们的代码中,我们调用了一些服务并返回字符串化 JSON 作为结果。字符串化 JSON 是一个 "SomeItem" 数组,其中只有四个字段 - 3 个 Longs 和 1 个字符串
例如:
[
{"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"},
{"id":35,"count":23000,"someOtherCount":0,"someString":"blah"},
...
]
我一直在使用游戏 API 来使用隐式写入/读取读取值。但我无法让它为数组工作。
例如,我一直在尝试解析响应中的值,然后将其转换为 SomeItem 大小写 class 数组,但它失败了:
val sanityCheckValue: JsValue: Json.parse(response.body)
val Array[SomeItem] = Json.fromJson(sanityCheckValue)
我有
implicit val someItemReads = Json.reads[SomeItem]
但它似乎不起作用。我也尝试设置 Json.reads[Array[SomeItem]],但没有成功。
这应该有效吗?关于如何让它工作的任何提示?
import play.api.libs.json._
case class SomeItem(id: Long, count: Long, someOtherCount: Long, someString: String)
object SomeItem {
implicit val format = Json.format[SomeItem]
}
object PlayJson {
def main(args: Array[String]): Unit = {
val strJson =
"""
|[
| {"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"},
| {"id":35,"count":23000,"someOtherCount":0,"someString":"blah"}
|]
""".stripMargin
val listOfSomeItems: Array[SomeItem] = Json.parse(strJson).as[Array[SomeItem]]
listOfSomeItems.foreach(println)
}
}
在我们的代码中,我们调用了一些服务并返回字符串化 JSON 作为结果。字符串化 JSON 是一个 "SomeItem" 数组,其中只有四个字段 - 3 个 Longs 和 1 个字符串
例如:
[
{"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"},
{"id":35,"count":23000,"someOtherCount":0,"someString":"blah"},
...
]
我一直在使用游戏 API 来使用隐式写入/读取读取值。但我无法让它为数组工作。
例如,我一直在尝试解析响应中的值,然后将其转换为 SomeItem 大小写 class 数组,但它失败了:
val sanityCheckValue: JsValue: Json.parse(response.body)
val Array[SomeItem] = Json.fromJson(sanityCheckValue)
我有
implicit val someItemReads = Json.reads[SomeItem]
但它似乎不起作用。我也尝试设置 Json.reads[Array[SomeItem]],但没有成功。
这应该有效吗?关于如何让它工作的任何提示?
import play.api.libs.json._
case class SomeItem(id: Long, count: Long, someOtherCount: Long, someString: String)
object SomeItem {
implicit val format = Json.format[SomeItem]
}
object PlayJson {
def main(args: Array[String]): Unit = {
val strJson =
"""
|[
| {"id":33,"count":40000,"someOtherCount":0,"someString":"stuffHere"},
| {"id":35,"count":23000,"someOtherCount":0,"someString":"blah"}
|]
""".stripMargin
val listOfSomeItems: Array[SomeItem] = Json.parse(strJson).as[Array[SomeItem]]
listOfSomeItems.foreach(println)
}
}