Получить контент из anyContent как Json

У меня есть класс case с полем AnyContent. Я получаю это из БД как

AnyContentAsText( //some value)

Чем когда я получаю его в формате JSON, как текст

Json.obj("body"->content.asText)

он возвращается

[{"body":"AnyContentAsJson({\"ma\":\"[email protected]\"})"}]

Когда я хочу получить это как JSON

Json.obj(content.asJson)

я получил

[null]

Как я могу получить его как JSON, но не нулевой, конечно?


person Azula    schedule 20.05.2016    source источник
comment
Мне непонятно, как выглядит ваш case class и что делает метод asText   -  person mfirry    schedule 20.05.2016


Ответы (2)


Единственный способ перейти от AnyContentAsText к JSON — это просто выполнить Json.parse(content.asText).

Однако странно, что вы получаете значение из своей БД как AnyContentAsText. AnyContentAsText и все другие подклассы AnyContent действительно предназначены для жизненного цикла запроса. Когда вы используете запрос в методе контроллера, первое, что вы должны сделать, это проанализировать ваш AnyContent в ожидаемое базовое значение (текст, json и т. д.), а затем выполнить любую бизнес-логику/постоянство с этими базовыми значениями.

person josephpconley    schedule 20.05.2016

Если вы получаете AnyContentAsText на серверной части, проверьте заголовки запросов, которые отправляет клиент. Я забыл заголовок "Content-Type": "application/json" в своем POST с содержимым JSON. После добавления заголовка я получил AnyContentAsJson на стороне бэкенда, как и ожидалось.

person Juuso Ohtonen    schedule 10.11.2020