Попробуйте JavaScriptSerializer вместо DataContractJsonSerializer
JavaScriptSerializer serializer = new JavaScriptSerializer();
var output = serializer.Serialize(your_anon_object);
обратите внимание, что это с 2008. Сегодня я утверждал бы, что сериализатор должен быть встроен и что можно, вероятно, использовать чванство + атрибуты, чтобы проинформировать потребителей о конечной точке и данных возврата.
<час>Iwould утверждают, что Вы не должны сериализировать анонимный тип . Я знаю искушение здесь; Вы хотите быстро генерировать некоторые холостые типы, которые просто будут используемыми в свободно среда типа иначе JavaScript в браузере. Однако, я создал бы фактический тип и украсил бы его как сериализуемый. Тогда можно сильно ввести веб-методы. В то время как это не имеет значения одна йота для JavaScript, она действительно добавляет некоторое самодокументирование к методу. Любой довольно опытный программист будет в состоянии посмотреть на функциональную подпись и сказать, "О, это - тип Foo! Я знаю, как это должно посмотреть в JSON".
Однако Вы могли бы попробовать JSON.Net, чтобы сделать сериализацию. Я понятия не имею, будет ли это работать
Принятие Вас использует это для веб-сервиса, можно просто применить следующий атрибут к классу:
[System.Web.Script.Services.ScriptService]
Тогда следующий атрибут к каждому методу, который должен возвратить Json:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
И набор тип возврата для методов, чтобы быть "объектный"
Вы можете попробовать мой ServiceStack JsonSerializer , это самый быстрый сериализатор .NET JSON на данный момент. Он поддерживает сериализацию DataContract, любого типа POCO, интерфейсов, объектов с поздним связыванием, включая анонимные типы и т. Д.
Базовый пример
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
Примечание: используйте Microsofts JavaScriptSerializer только в том случае, если производительность для вас не важна, так как мне пришлось оставить его из моих тестов, так как он до 40x-100x медленнее, чем другие сериализаторы JSON.