Мне нужно создать строку JSON, примерно так:
[
{ 'id': 1, 'name': 'John'},
{ 'id': 2, 'name': 'Dani'}
]
val jArray = JsArray();
jArray += (("id", "1"), ("name", "John"))
jArray += (("id", "2"), ("name", "Dani"))
println(jArray.dump)
Мне нужно добавить строки jArray
, например,jArray += ...
Какая библиотека / решение ближе всего к этому?
Ответы:
К сожалению, написание библиотеки JSON - это версия сообщества Scala для написания приложения со списком задач.
Есть множество альтернатив. Я перечисляю их в произвольном порядке с примечаниями:
💣 = не исправлены уязвимости безопасности, § = имеет интеграцию со Scalaz, ± = поддерживает взаимодействие с Jackson
JsonNode
В снегоочиститель мы используем json4s с Джексоном фоновым; у нас тоже был хороший опыт работы с Аргонавтом.
источник
Lift-json имеет версию 2.6, и он работает очень хорошо (и также очень хорошо поддерживается, сопровождающий всегда готов исправить любые ошибки, которые могут найти пользователи. Вы можете найти примеры его использования в репозитории github.
Сопровождающий (Джони Фриман) всегда доступен в списке рассылки Lift . В списке рассылки есть и другие пользователи, которые тоже могут нам помочь.
Как указывает @Alexey, если вы хотите использовать библиотеку с другой версией Scala, скажем
2.11.x
, изменитеscalaVersion
и используйте%%
следующим образом:Вы можете проверить сайт liftweb.net, чтобы узнать последнюю версию со временем.
источник
Я предлагаю использовать jerkson , он поддерживает большинство основных преобразований типов:
источник
Номер 7 в списке - Джексон, а не Джексон. Он поддерживает объекты Scala (классы case и т. Д.).
Ниже приведен пример того, как я его использую.
Это очень просто. Кроме того, есть XmlSerializer и поддержка аннотаций JAXB очень удобна.
В этом сообщении блога описывается его использование с JAXB Annotations и Play Framework.
http://krasserm.blogspot.co.uk/2012/02/using-jaxb-for-xml-and-json-apis-in.html
Вот мой текущий JacksonMapper.
источник
Возможно, я немного опоздал, но вам действительно стоит попробовать использовать json-библиотеку из игрового фреймворка. Вы можете посмотреть документацию . В текущем выпуске 2.1.1 вы не могли использовать его отдельно без всей игры 2, поэтому зависимость будет выглядеть так:
Это принесет вам всю игровую структуру со всем, что есть на борту.
Но насколько я знаю, ребята из Typesafe планируют отделить его в версии 2.2. Итак, есть отдельный play-json из 2.2-снапшота.
источник
Вы должны проверить Генсона . Он просто работает и его намного проще использовать, чем большинство существующих альтернатив в Scala. Это быстро, имеет множество функций и интеграции с некоторыми другими библиотеками (jodatime, json4s DOM api ...).
И все это без какого-либо причудливого ненужного кода, такого как имплициты, настраиваемые читатели / писатели для основных случаев, ilisible API из-за перегрузки оператора ...
Использовать его так же просто, как:
Отказ от ответственности: я автор Gensons, но это не значит, что я не объективен :)
источник
Вот базовая реализация записи, а затем чтения
json
файла с использованиемjson4s
.источник
Jawn - очень гибкая библиотека парсера JSON в Scala. Он также позволяет создавать собственные AST; вам просто нужно снабдить его небольшим признаком для сопоставления с AST.
Отлично работал для недавнего проекта, который нуждался в небольшом разборе JSON.
источник
Кажется, что в списке ответов нет Восторга. Его можно получить на http://rapture.io/ и позволяет (помимо прочего):
Я не хочу копировать / вставлять примеры Rapture со страницы. Прекрасная презентация возможностей Rapture была сделана Джоном Претти на SBTB 2014: https://www.youtube.com/watch?v=ka5-OLJgybI
источник
Ответ @AlaxDean №7, Argonaut - единственный, кого я смог быстро заставить работать с sbt и intellij. На самом деле json4s тоже занимал мало времени, но я не хотел иметь дело с необработанным AST. Я заставил argonaut работать, вставив одну строку в свой build.st:
libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"
А затем простой тест, чтобы узнать, могу ли я получить JSON:
А потом
Убедитесь, что вы знакомы с Option, который представляет собой просто значение, которое также может быть нулевым (я полагаю, нулевым). Argonaut использует Scalaz, поэтому, если вы видите что-то, чего не понимаете, например символ
\/
(или операцию), это, вероятно, Scalaz.источник
Вы можете попробовать это: https://github.com/momodi/Json4Scala
Это просто и содержит только один файл scala с кодом менее 300 строк.
Есть образцы:
источник
Я использую uPickle, который имеет большое преимущество в том, что он автоматически обрабатывает вложенные классы case:
Добавьте это в свой,
build.sbt
чтобы использовать uPickle:источник
Я использую библиотеку PLAY JSON, здесь вы можете найти репозиторий mavn только для библиотеки JSON, а не для всей структуры
Здесь можно найти очень хорошие уроки о том, как их использовать:
http://mandubian.com/2012/09/08/unveiling-play-2-dot-1-json-api-part1-jspath-reads-combinators/
http://mandubian.com/2012/10/01/unveiling-play-2-dot-1-json-api-part2-writes-format-combinators/
http://mandubian.com/2012/10/29/unveiling-play-2-dot-1-json-api-part3-json-transformers/
источник
Позвольте мне также дать вам версию SON JSON :
источник
Play выпустила свой модуль для работы с JSON независимо от Play Framework, Play WS.
Сделал сообщение об этом в блоге, проверьте его на http://pedrorijo.com/blog/scala-json/
Используя классы case и Play WS (уже включенные в Play Framework), вы конвертируете классы json и case с помощью простого неявного однострочного
источник