У меня есть JSON строку какДоступ к внутренней области JSON в Scala
{
"whatsNew" : {
"oldNotificationClass" : "WhatsNewNotification",
"notificationEvent" : { ..... },
"result" : {
"notificationCount" : 10
.....
}
},
......
"someEmpty": { },
......
}
Я пытаюсь получить notificationCount
поле с помощью json4s
в Scala
следующим образом, но notificationCount
приходит в пустой для всех. Любая помощь?
UPDATE Также, если какая-то пара пуста, как я могу обрабатывать пустое состояние и продолжать цикл?
Функция, возвращающая JSON строку из файла
def getData(): Map[String, AnyRef] = {
val jsonString = scala.io.Source.fromInputStream(this.getClass.getResourceAsStream("/sample.json")).getLines.mkString
val jsonObject = parse(s""" $jsonString """)
jsonObject.values.asInstanceOf[Map[String, AnyRef]]
}
код, чтобы получить поля
val myMap: Map[String, AnyRef] = MyDataLoader.getData
for((key, value) <- myMap) {
val id = key
val eventJsonStr: String = write(value.asInstanceOf[Map[String, String]] get "notificationEvent")
val resultJsonStr: String = write(value.asInstanceOf[Map[String, String]] get "result")
//val notificationCount: String = write(value.asInstanceOf[Map[String, Map[String, String]]] get "notificationCount")
}
Я хочу сделать внутри карты для цикла. не в getData(). –
Лучше сохранить JSON AST - или дерево - при прохождении через дерево, чтобы вы могли делать пути с помощью поддеревьев. См. Обновление. – bjfletcher