尝试将 json 数组解析为 Scala 中的 List[Object] 时出现验证错误

Raf*_*SCS 5 arrays json scala playframework

我有一个返回 Foo 类型的 JsArray 的方法。

为了处理响应,我正在执行以下操作:

val foos : List[Foo] = Json.toJson(result).as[List[Foo]]
Run Code Online (Sandbox Code Playgroud)

在调试时,我可以看到结果如下:

"[]"
Run Code Online (Sandbox Code Playgroud)

它是由代码生成的:

Ok(Json.toJson(foos))
Run Code Online (Sandbox Code Playgroud)

其中foos是一个列表[Foo]

但我收到错误:

[JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsarray,WrappedArray())))))]

我尝试了很多方法,但无法解决这个问题。

我做错了什么?

Eri*_*ric 5

您很可能正在寻找Json.parse,而不是Json.toJson

import play.api.libs.json.Json

scala> Json.toJson("[]")
res0: play.api.libs.json.JsValue = "[]"

scala> Json.parse("[]")
res1: play.api.libs.json.JsValue = []
Run Code Online (Sandbox Code Playgroud)

尝试转换res0为 aList[Foo]不起作用,因为您正在尝试转换字符串"[]"而不是没有引号的相同字符串,[].