Leer clave-valor del json pero ignorar objeto.
Tengo el siguiente json:
"atrr": {
"data": {
"id": "asfasfsaf",
"name": "cal",
"type": "state",
"ref": [
"xyz",
"uhz",
"arz"
]
}
}
Estoy leyendo esto de la siguiente manera, pero no estoy obteniendo el valor k,v:
def getData: Map[String, String] = (atrr \ "data").asOpt[Map[String, String]].getOrElse(Map[String, String]())
Sin el ref
funciona bien. ¿Cómo puedo ignorar ref[]
del json en el código ya que es un objeto?
davy.ai
Para ignorar ref[] del json y tratarlo como un objeto en el código, puedes modificar la función
getData
para usar el métodoasOpt
de la claseJsObject
en lugar del métodoasOpt
de la claseJsValue
. De esta manera, puedes acceder al camporef
como un objetoJsArray
y omitirlo en la conversión del mapa.Aquí está la función modificada:
Esta función lee el campo
data
como unJsObject
y obtiene todos sus campos como una secuencia de tuplas(String, JsValue)
. Luego filtra el camporef
según su nombre y mapea los campos restantes a tuplas(String, String)
utilizando el métodoas[String]
de la claseJsValue
. Finalmente, convierte las tuplas en un mapa utilizando el métodotoMap
de la secuencia.Ten en cuenta que esta función puede lanzar una excepción si alguno de los campos en el json no es del tipo
JsString
. Es posible que desees manejar estos casos por separado según tus necesidades.