json - 检查对象在 json4s/lift-json 中是否有字段

标签 json scala lift-json json4s

我有一个包含一些字段的 json,我想检查其中一些字段是否存在。我正在提取值并针对 JNothing 对其进行测试,但它太冗长了:

val json: JValue = ...

val jsonIsType1 = (json \ "field1") != JNothing && (json \ "field2") != JNothing

是否有更紧凑的方法来使用 json4s/lift-json 检查 json 对象中字段的存在?理想情况下是这样的:
val jsonIsType1 = json.has("field1") && json.has("field2")

最佳答案

JValue 没有“has”运算符,但 Scala 隐式的强大功能使您可以轻松添加该功能。

这是一个例子:

implicit class JValueExtended(value: JValue) {
  def has(childString: String): Boolean = {
    if ((value \ childString) != JNothing) {
      true
    } else {
      false
    }
  }
}

用法示例:
scala> val json = Json.parse("""{"field1": "ok", "field2": "not ok"}""")

scala> json.has("field1")
res10: Boolean = true

关于json - 检查对象在 json4s/lift-json 中是否有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665504/

相关文章:

json - 为什么在使用lift-json时在我的json字符串中得到 "$outer"?

javascript - AngularJS 从 JSON 中提取 <img>

c# - 用于筛选和循环遍历多个表的 ASP.NET LINQ 查询

scala - 案例类中的产品继承

Scala Lift 几个 https 问题

lift-json 无法反序列化可选字段

scala - lift-json XPath\\operator 根据 num 匹配有不同的返回类型

javascript - 布局、Phonegap 和 JSON

java - (Java) 从文件错误中解析 JSON

可迭代且具有长度的 Scala 类型?