Я пытаюсь сделать простой пример сериализации класса в Scala, используя библиотеку json4s, но даже после долгих поисков в Интернете, к сожалению, я не смог найти любой удовлетворительный образец, который решил бы мою проблему.
По сути, у меня есть простой класс с именем Person
, и я хочу извлечь экземпляр этого класса из строки JSON.
case class Person(
val name: String,
val age: Int,
val children: Option[List[Person]]
)
Итак, когда я делаю это:
val jsonStr = "{\"name\":\"Socrates\", \"age\": 70}"
println(Serialization.read[Person](jsonStr))
Я получаю этот вывод:
"Person(Socrates,70,None)" // works fine!
Но когда у меня нет параметра age в строке JSON, я получаю эту ошибку:
Исключение в потоке «основной» org.json4s.package$MappingException: нет полезного значения для возраста
Я знаю, что класс Person
имеет два обязательных параметра в своем конструкторе, но я хотел бы знать, есть ли способ сделать это преобразование с помощью синтаксического анализатора или чего-то подобного.
Кроме того, я пытался сделать этот парсер, но безуспешно.
Заранее благодарю за любую помощь.
Option
, вернуть специальное значение, использоватьOption
для параметраage
, использовать специальное числоage
для обозначения неуказанного, вернутьTry
илиEither
... список продолжается и продолжается. Вы просите помощи в кодировании синтаксического анализатора или решаете, что ваш код должен делать в первую очередь? - person Dan Getz   schedule 23.05.2015isValid
. Это было бы удовлетворительно для архитектуры, о которой я думал. - person blzn   schedule 23.05.2015