Библиотека Scala JSON с автоматической сериализацией (путем самоанализа)

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

Джексон из Java делает это, но он не является родным для Scala, и у меня возникли проблемы с его десериализацией вложенных дженериков (которые я приписываю системе типов Java). Есть Jerkson, оболочка Scala для Джексона, но она заброшена уже несколько лет.

Что ты порекомендуешь?


person larspars    schedule 14.12.2015    source источник
comment
Думаю, здесь вам поможет ScalaJack, github.com/gzoller/ScalaJack, в качестве альтернативы есть несколько других поддерживается в списке из замечательного репозитория Scala - github.com/lauris/awesome-scala#json   -  person Faktor 10    schedule 15.12.2015
comment
Спасибо. Я только что попробовал ScalaJack, но, похоже, у него нет автоматической сериализации произвольных объектов.   -  person larspars    schedule 15.12.2015


Ответы (2)


play-json, http://mvnrepository.com/artifact/com.typesafe.play/play-json_2.11 — хороший выбор. На самом деле это оболочка вокруг Джексона, но она предоставляет множество утилит, смягчающих сериализацию и десерилизацию. Подробнее см. https://www.playframework.com/documentation/2.4.x/ScalaJson

Кроме того, он уже обеспечивает чтение и запись для базового типа данных в Scala. Все, что вам нужно сделать, это определить формат модели в сопутствующем объекте.

import play.api.libs.json.Json
implicit val format = Json.format[YourObject]

Это подробный пример, https://github.com/luongbalinh/play-mongo/blob/master/app/models/User.scala

person Luong Ba Linh    schedule 14.12.2015
comment
Несмотря на то, что это прекрасная библиотека, play-json не обеспечивает автоматическую сериализацию посредством самоанализа, о которой просил ОП. - person Alvaro Carrasco; 14.12.2015
comment
Спасибо. Я пробовал play-json, но, как указал Альвара, у него нет функции автоматической сериализации, которую я искал. - person larspars; 15.12.2015

Core Jackson не имеет явной поддержки Scala, но модуль Jackson Scala:

https://github.com/FasterXML/jackson-module-scala

поддерживает типы данных Scala.

person StaxMan    schedule 16.12.2015