gpt4 book ai didi

json - Play ScalaJSON Reads[T] 解析 ValidationError(error.path.missing,WrappedArray())

转载 作者:行者123 更新时间:2023-12-03 22:26:39 30 4
gpt4 key购买 nike

我有一个有趣的 json 数据,如下所示:

[ {
"internal_network" : [ {
"address" : [ {
"address_id" : 2,
"address" : "172.16.20.1/24"
}, {
"address_id" : 1,
"address" : "172.16.30.30/24"
} ]
} ],
"switch_id" : "0000000000000001"
}, {
"internal_network" : [ {
"address" : [ {
"address_id" : 2,
"address" : "172.16.30.1/24"
}, {
"address_id" : 1,
"address" : "192.168.10.1/24"
}, {
"address_id" : 3,
"address" : "172.16.10.1/24"
} ]
} ],
"switch_id" : "0000000000000002"
} ]

我写了案例类和自定义读取:
  case class TheAddress(addr: (Int, String))
implicit val theAddressReads: Reads[TheAddress] = (
(__ \ "address_id").read[Int] and
(__ \ "address").read[String] tupled) map (TheAddress.apply _)

case class Addresses(addr: List[TheAddress])
implicit val addressesReads: Reads[Addresses] =
(__ \ "address").read(list[TheAddress](theAddressReads)) map (Addresses.apply _)

case class TheSwitch(
switch_id: String,
address: List[Addresses] = Nil)
implicit val theSwitchReads: Reads[TheSwitch] = (
(__ \ "switch_id").read[String] and
(__ \ "internal_network").read(list[Addresses](addressesReads)))(TheSwitch)

case class Switches(col: List[TheSwitch])
implicit val switchesReads: Reads[Switches] =
(__ \ "").read(list[TheSwitch](theSwitchReads)) map (Switches.apply _)

当我验证提供的数据时:
val json: JsValue = Json.parse(jsonChunk)
println(json.validate[TheSwitch])

我得到:
JsError(List((/switch_id,List(ValidationError(error.path.missing,WrappedArray()))), (/internal_network,List(ValidationError(error.path.missing,WrappedArray())))))

我可以像 JsPath 一样访问它
val switches: Seq[String] = (json \\ "switch_id").map(_.as[String])

但我真的不知所措,因为我在自定义读取上做错了什么。
我试过放置另一个顶级键和其他组合,但似乎我错过了一些重要的东西,因为我今天才开始使用它。

多谢。

最佳答案

错误告诉你,而不是 /switch_id它有一个数组。因此,您似乎应该将 JSON 读作 List[Switch]而不仅仅是 Switch
假设您的 Reads (没有测试它们)是正确的,这应该有效:

val json: JsValue = Json.parse(jsonChunk)
println(json.validate[List[TheSwitch]])

关于json - Play ScalaJSON Reads[T] 解析 ValidationError(error.path.missing,WrappedArray()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21737897/

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