使用circe检查json是否为空

1tuwyuhd  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(448)

circe 提供任何功能来检查 io.circe.Json 对象为空?
json文档没有报告任何关于它的内容,而jsonobject文档谈论的是一个isempty函数,但是我验证了这一点

{}.asJson.asObject.isEmpty // false

所以它没有像我预期的那样工作。

jyztefdp

jyztefdp1#

它不能以你所期望的方式工作,因为 Json.asObject 退货 Some 如果底层json是object,因为除此之外,它还可以 String , Number , Null 或者 Array ,因此 "{}".asObject (不完全正确只是为了举例)-返回 Some(JsonObject()) 你收到了吗 false 因为 Some.isEmpty=false . 你想要的是:

import io.circe._, io.circe.parser._
val emptyJsonObject = parse("{}").toOption.get //Unsafe operation for sake of answer example - DO NOT do it in production code.
println(emptyJsonObject.asObject) // prints `Some(object[])`
println(emptyJsonObject.asObject.exists(_.nonEmpty)) //prints `false`

斯卡斯蒂:https://scastie.scala-lang.org/gghgchnorlgq0hxmskf76q

w1jd8yoj

w1jd8yoj2#

我只是忘了 asObject 返回一个 Option[JsonObject] ,所以 isEmpty 只是检查一下 Some ?

.asObject.map(_.isEmpty).getOrElse(true)

作品

相关问题