Каковы некоторые основные моменты при работе с ответами Json? - PullRequest
5 голосов
/ 12 февраля 2010

Я работаю над проектом ASP.Net MVC и выучил несколько маленьких трюков с объектами JSON, которые заставили меня довольно долго чесать голову. Например, чтобы при вызове $ .getJSON () из jQuery мне действительно нужно было убедиться, что мой JSON возвращает объект, а не просто строковое значение (ну, верно?).

На какие ключевые моменты следует обратить внимание при работе с объектами JSON и ответами в вашем опыте? Меня особенно интересует ASP.Net, но может быть любой язык.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Одна неприятная ошибка json, которая укусила меня, произошла, когда я использовал сериализацию .Net в проекте WCF для получения ответов JSon для другой службы. Это был совершенно законный JSon согласно онлайн-верификатору, но получатель не проглотит его.

Оказалось, что порядок содержимого имеет значение. Согласно спецификации JSon, порядок не должен иметь значения, но, очевидно, потребитель на другом конце использовал какой-то специальный анализатор, который задыхался, когда не находил определенное поле вверху. Сериализатор расположил содержимое в алфавитном порядке.

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

Пример:

[DataMember(Order = 1)] //<-- thank Zod this exists!
public List<Foo> MyFoos { get; set; }

помещает массив MyFoos вверху ответа JSon.

Примечание: если вы сделаете это, убедитесь, что у каждого элемента данных есть порядок, потому что элементы данных без номера заказа по-прежнему будут всплывать наверх.

1 голос
/ 12 февраля 2010

Никогда не отправляйте переводы строки или новые строки. Также из-за побега Characer. Если вы используете поисковик .NET Json, он должен позаботиться об этом за вас, но если вы делаете это самостоятельно, вам нужно быть осторожным.

Также я заметил, что иногда строки отправляются / извлекаются с начальными пробелами, поэтому обязательно вызовите .trim ()!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...