Может ли Чешир опускать ключи без значений?

Я использую Cheshire для создания JSON для таких структур данных:

(require '[cheshire.core :refer [generate-string])
(generate-string {:id 123, :foo "something", :bar nil})

Что создает JSON следующим образом:

{"id": 123, "foo": "something", "bar": null}

Я бы хотел, чтобы JSON опускал ключи без значений; например

{"id": 123, "foo": "something"}

Сможет ли Чешир сделать это? Я, конечно, могу предварительно отфильтровать карту перед вызовом generate-string, но, поскольку Чеширу все равно приходится проходить мою структуру данных, я подумал, что будет более эффективно поручить Чеширу выполнить фильтрацию.


person Josh Glover    schedule 14.05.2014    source источник
comment
Нет, null – допустимое значение JSON, поэтому вам следует отфильтровать значения nil самостоятельно. Дополнительную информацию см. в этом вопросе.   -  person Leonid Beschastny    schedule 14.05.2014
comment
Леонид, не могли бы вы сделать свой комментарий ответом? :)   -  person Josh Glover    schedule 14.05.2014
comment
Я знаю, что null является допустимым значением JSON, и я, конечно, не думаю, что это должно быть поведением Чешира по умолчанию. Я думаю, это была бы хорошая дополнительная функция, вроде запуска (keyword) на ключах JSON во время синтаксического анализа.   -  person Josh Glover    schedule 14.05.2014
comment
@JoshGlover Это определенно не должно быть поведением по умолчанию, поскольку это означало бы, что повторный анализ JSON возвращает другую карту.   -  person Andrew Marshall    schedule 14.05.2014


Ответы (1)


Нет, null — это допустимое значение JSON, поэтому вам следует отфильтровать nil значения самостоятельно.

Дополнительную информацию см. в этом вопросе.

Вы можете предложить эту функцию команде Cheshire.

person Leonid Beschastny    schedule 14.05.2014