Неправильное извлечение JSON с помощью JSON4S - PullRequest
2 голосов
/ 13 мая 2019

У меня есть JSON:

{"key1":["12345"],"key2":[{"key3":"some value"}]}

Мне нужно извлечь значение для ключа3

Когда я делаю compact(render(json \ "key2" \ "key3"))

Я получаю строку с квадратной скобкой ["некоторое значение"]. Пожалуйста, дайте мне знать, как получить только значение в виде строки.

Ответы [ 3 ]

2 голосов
/ 13 мая 2019

Вот способ сделать это, используя метод apply для JArray:

import org.json4s._
import org.json4s.native.JsonMethods._

val json = parse("""{"key1":["12345"],"key2":[{"key3":"some value"}]}""")
(json \ "key2" )(0) \ "key3"
// res6: JValue = JString("some value")
1 голос
/ 13 мая 2019

Попробуйте \\, который возвращает все соответствующие поля по имени. Например

import org.json4s._
import org.json4s.native.JsonMethods._

object Hello extends App {
  val json = parse("""{"key1":["12345"],"key2":[{"key3":"some value"}]}""")
  println(json \\ "key3")
}

должен вывести JString(some value).

0 голосов
/ 13 мая 2019
import org.json4s.jackson.JsonMethods

val x =
  """{"key1":["12345"],"key2":[{"key3":"some value"}]}
    | """
val key3 =  JsonMethods.parse(x) \ "key2" \ "key3"
val list = (key3.values)
println(list)

будет печатать Список (некоторое значение)

...