Одна неприятная ошибка json, которая укусила меня, произошла, когда я использовал сериализацию .Net в проекте WCF для получения ответов JSon для другой службы. Это был совершенно законный JSon согласно онлайн-верификатору, но получатель не проглотит его.
Оказалось, что порядок содержимого имеет значение. Согласно спецификации JSon, порядок не должен иметь значения, но, очевидно, потребитель на другом конце использовал какой-то специальный анализатор, который задыхался, когда не находил определенное поле вверху. Сериализатор расположил содержимое в алфавитном порядке.
Я немного отчаивался, пока не обнаружил, что могу дать сериализатору явный заказ через контракты данных. Проблема решена.
Пример:
[DataMember(Order = 1)] //<-- thank Zod this exists!
public List<Foo> MyFoos { get; set; }
помещает массив MyFoos вверху ответа JSon.
Примечание: если вы сделаете это, убедитесь, что у каждого элемента данных есть порядок, потому что элементы данных без номера заказа по-прежнему будут всплывать наверх.