Является ли [] допустимым способом представления нулевого значения в результате json?
Я пытаюсь использовать сторонний JSON API, и ожидалось, что нулевое значение вообще не будет иметь значения, исключено из результата или по умолчанию. Вместо этого API возвращает back [] вместо одного значения (а не что-то, что было бы массивом), если значение не существует:
"SomeExpectedDate": [],
"SomeExpectedString": [],
...
Когда я пытаюсь десериализовать это с помощью JayRock JsonConvert, это не удается, так как я пытаюсь загрузить в отдельные значения String или DateTime.
Это нормально, или я должен пожаловаться поставщику API (это недавно введенный API)
2 ответа
В общем нет. В JSON []
указывает на пустой массив. Если вы хотите представить нулевое значение, используйте null
ключевое слово. Подобно:
{"someString": null}
Хотя с точки зрения того, как вы хотите представить нулевое значение в вашем JSON, это полностью зависит от вас. Если вы напишите принимающий код так, чтобы он понимал, что пустой массив эквивалентен нулю, это, безусловно, будет работать.
Однако, по моему мнению, это был бы очень сомнительный / ненадежный / трудный подход к обслуживанию. Это имеет больше смысла использовать null
ключевое слово или, если это не так, пустая строка ({"someString": ""}
).
Редактировать:
Чтобы ответить на ваше обновление об этой проблеме, связанной с использованием стороннего API, я определенно думаю, что это проблема, которую нужно решить с поставщиком API. Они не должны возвращаться []
если они действительно имеют в виду null
, Хотя то, что они отправляют, является технически действительным JSON, семантически сомнительно, что они используют []
вместо null
,
Если сторонний API, который вы используете, говорит, что пустой массив равен нулю, то это совершенно правильно, и вам нужно написать свой код вокруг него.
Это, безусловно, отличается от всего, что я видел раньше, так как у Json есть null
ключевое слово, но это совершенно законный синтаксис.