Helpers - компьютеры, интернет, программирование

Как обрабатывать значения None в JSON

У меня есть код, который создает объект JSON в Scala в контексте Playframework.

def toJson(): JsObject = Json.obj(
  "status" -> JsString(result.getOrElse("fail")),
  "age" -> JsNumber(age.getOrElse(0))
)

Где результат и возраст заключены в Option. Часть getOrElse в строке возраста указывает, что возраст недоступен. Это то, что я хотел бы обойти.

В результате получается:

{
status: "fail",
age: 0
}

Вопрос A: В этом примере возраст равен None, поэтому getOrElse возвращает 0, который должен интерпретироваться клиентами как некое магическое число со специальным значением. Я хотел бы вернуть что-то вроде None, но play.api.libs.json.JsNumber ожидает scala.BigDecimal.

Есть ли способ обойти это?

Вопрос Б. Решением вопроса А было бы не указывать возраст, если он недоступен, поэтому результат будет выглядеть так:

{
status: "fail"
}

Я не могу возиться с конструкцией Json.obj(a, b,...)...

Итак, как должен выглядеть код для достижения чего-то подобного?

03.10.2013

  • Какая версия Play, пожалуйста? 03.10.2013
  • @JulienLafont: играть 2.1.3 03.10.2013

Ответы:


1

Посмотрите, работает ли что-то вроде этого для вас:

val fields:Seq[Option[(String,JsValueWrapper)]] = Seq(
  result.map(s => ("status", JsString(s))),
  age.map(i => ("age", JsNumber(new BigDecimal(i))))
)
val finalFields = fields.flatten

Json.obj(finalFields:_*)   

Когда Seq сглаживается, типы None в нем должны быть удалены и, таким образом, не будут частью результирующего JsObject.

03.10.2013
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..