2015-06-16 3 views
0

Мне нужно получить информацию из JsValue, которая может быть структурирована несколькими способами, покупая определенные значения, которые я ищу, всегда будет под похожими именами.ScalaJson: перемещение структуры JSValue (синтаксис JSONPath), где ключ может быть одной из двух строк.

Так, например, я мог бы что-то вроде:

{ 
    "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"

Я знаю, что я хочу либо под name, либо title, но не уверен, что в данном сценарии. Есть ли способ сделать что-то похожее на то, что я сделал выше, с помощью метода «или», аналогичного методу Scala .getOrElse()?

ответ

0

Вы можете сделать:

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

 Смежные вопросы

  • Нет связанных вопросов^_^