Как десериализовать сложный JSON с помощью Scala SprayJSON? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть следующий JSON:

{  
   "key1":[  
      {  
         "key2":{  
            "key3":"value3",
            "key4":"value4"
         },
         "key5":{  
            "key6":"value6"
         },
         "key7":[  
            {  
               "key8":"value8",
               "key9":"value9"
            }
         ],
         "key10":"value10",
         "key11":"value11"
      }
   ],
   "key12":"value12"
}

Как я могу получить вложенные элементы (например, value6 ), используя SprayJson.

Мне удалось получить только верхнююклавиша уровня "ключ1" .

case class Key1(key1: JsArray)
object Key1Protocol extends DefaultJsonProtocol {
    implicit val key1: RootJsonFormat[Key1] = jsonFormat1(Key1)
}
<jsonString>.parseJson.convertTo[Key1]

1 Ответ

0 голосов
/ 14 февраля 2019

Это может помочь:

case class Key1(key1: JsArray)

object Key1Protocol extends DefaultJsonProtocol {
  implicit val key1: RootJsonFormat[Key1] = jsonFormat1(Key1)
}

import spray.json._
import DefaultJsonProtocol._

object MainJson {
  import Key1Protocol._

  def main(args: Array[String]): Unit = {
    val jsonAst = TestComplexJson.str.parseJson.convertTo[Key1]
    val result = jsonAst.key1
      .elements(0)
      .asJsObject
      .getFields("key5")(0)
      .asJsObject()
      .getFields("key6")(0)
    println(result)
  }
}

дает "значение6"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...