Преобразование строки JSON в объект JSON в Scala

Я хочу преобразовать простую строку JSON, такую ​​как {"Name":"abc", "age":10}, в соответствующий объект JSON (а не пользовательский объект Scala, такой как "Лицо" ). Поддерживает ли Scala встроенные методы для преобразования String в объект JSON?

У меня не будет никаких сложных операций JSON. Мне просто нужно преобразовать String в объект JSON. Каков самый простой способ сделать это? Я новичок в Scala, поэтому прошу прощения, если этот вопрос звучит очень просто.

Спасибо.

Ответ 1

Примечание. Технически, теперь нет основного ядра Scala для "разбора" JSON. Вы должны использовать внешнюю поддерживаемую библиотеку, такую как Spray JSON или Play JSON.

Начиная с Scala 2.11 библиотека парсер-комбинатор больше не включается в ядро основного языка и должна быть добавлена отдельно к вашему проекту. Кроме того, парсер JSON с тех пор устарел в поддерживаемой сообществом версии библиотеки парсер-комбинатор. Я бы не рекомендовал использовать эту библиотеку.

Вы можете добавить его в свой проект, если захотите, добавив в свой файл build.sbt следующее:

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"

Исходный код библиотеки можно найти на странице https://github.com/scala/scala-parser-combinators.


Поскольку вы специально спросили о родных средствах Scala для разбора JSON - пакет, который вы ищете, - это scala.utils.parsing.json. Должно работать следующее:

import scala.util.parsing.json._

val parsed = JSON.parseFull("""{"Name":"abc", "age":10}""")

parsed примет значение: Some(Map(Name → abc, age → 10.0))

Ответ 2

Возможно, вы захотите использовать библиотеку, например Spray JSON. Он предоставляет множество простых в использовании функций для преобразования в JSON и обратно. Если вы решили использовать Spray JSON, вы можете сделать это:

import spray.json._
// some code here
val json = "your json string here".parseJson

Ответ 3

Также вы можете использовать Json Library из игровой среды, но также можете использовать как автономную библиотеку. Эта библиотека основана на хорошем, но заброшенном проекте Jerkson, который является оболочкой Scala вокруг супер-быстрой Java-библиотеки JSON, Джексона. И он имеет очень богатый и хорошо документированный набор инструментов для работы с JSON - трансформерами, валидаторами и т.д.

import play.api.libs.json._

val json: JsValue = Json.parse("""{"a":1}""")

Чтобы использовать эту lib без игры, просто установите ее в build.sbt со строкой

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"

Ответ 4

parseFull возвращает термины Some(Map), parseRaw возвращает в терминах Some(JSONObject)

import scala.util.parsing.json._

val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)

parsed является JSONObject