ScalaJson:遍历 JSValue 结构(JSONPath 语法),其中键可能是两个不同字符串之一

ScalaJson: Traversing JSValue structure (JSONPath syntax) where key might be one of two different strings

我需要从可能以几种不同方式构建的 JsValue 中检索信息购买我要查找的特定值将始终使用相似的名称。

所以例如我可以有这样的东西:

{
  "name" : "Watership Down",
  "location" : {
    "lat" : 51.235685,
    "long" : -1.309197
  }
}

{
  "title" : "Watership Down",
  "size" : "M",
  "location" : {
    "latitude" : 51.235685,
    "longitude" : -1.309197
  }
}

我希望能够做到:val text = json \ "name"|"title"

我知道我想要的是 nametitle 但不确定在给定情况下是哪个。有没有什么方法可以用类似于 Scala 的 .getOrElse() 方法的 "or" 做一些类似于我上面所做的事情?

你可以这样做:

val text = (json \ "name").asOpt[String]
             .getOrElse((json \ "title").as[String])