做 circe 提供任何功能来检查 io.circe.Json 对象为空?json文档没有报告任何关于它的内容,而jsonobject文档谈论的是一个isempty函数,但是我验证了这一点
circe
io.circe.Json
{}.asJson.asObject.isEmpty // false
所以它没有像我预期的那样工作。
jyztefdp1#
它不能以你所期望的方式工作,因为 Json.asObject 退货 Some 如果底层json是object,因为除此之外,它还可以 String , Number , Null 或者 Array ,因此 "{}".asObject (不完全正确只是为了举例)-返回 Some(JsonObject()) 你收到了吗 false 因为 Some.isEmpty=false . 你想要的是:
Json.asObject
Some
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`
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
w1jd8yoj2#
我只是忘了 asObject 返回一个 Option[JsonObject] ,所以 isEmpty 只是检查一下 Some ?
asObject
Option[JsonObject]
isEmpty
.asObject.map(_.isEmpty).getOrElse(true)
作品
2条答案
按热度按时间jyztefdp1#
它不能以你所期望的方式工作,因为
Json.asObject
退货Some
如果底层json是object,因为除此之外,它还可以String
,Number
,Null
或者Array
,因此"{}".asObject
(不完全正确只是为了举例)-返回Some(JsonObject())
你收到了吗false
因为Some.isEmpty=false
. 你想要的是:斯卡斯蒂:https://scastie.scala-lang.org/gghgchnorlgq0hxmskf76q
w1jd8yoj2#
我只是忘了
asObject
返回一个Option[JsonObject]
,所以isEmpty
只是检查一下Some
?作品