Как я сериализирую анонимный тип C# к строке JSON?

158
задан Dariusz Woźniak 13 December 2018 в 12:36
поделиться

4 ответа

Попробуйте JavaScriptSerializer вместо DataContractJsonSerializer

JavaScriptSerializer serializer = new JavaScriptSerializer();
var output = serializer.Serialize(your_anon_object);
157
ответ дан Fenton 23 November 2019 в 21:41
поделиться

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

<час>

Iwould утверждают, что Вы не должны сериализировать анонимный тип . Я знаю искушение здесь; Вы хотите быстро генерировать некоторые холостые типы, которые просто будут используемыми в свободно среда типа иначе JavaScript в браузере. Однако, я создал бы фактический тип и украсил бы его как сериализуемый. Тогда можно сильно ввести веб-методы. В то время как это не имеет значения одна йота для JavaScript, она действительно добавляет некоторое самодокументирование к методу. Любой довольно опытный программист будет в состоянии посмотреть на функциональную подпись и сказать, "О, это - тип Foo! Я знаю, как это должно посмотреть в JSON".

Однако Вы могли бы попробовать JSON.Net, чтобы сделать сериализацию. Я понятия не имею, будет ли это работать

11
ответ дан Jason Jackson 23 November 2019 в 21:41
поделиться

Принятие Вас использует это для веб-сервиса, можно просто применить следующий атрибут к классу:

[System.Web.Script.Services.ScriptService]

Тогда следующий атрибут к каждому методу, который должен возвратить Json:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

И набор тип возврата для методов, чтобы быть "объектный"

1
ответ дан Paul 23 November 2019 в 21:41
поделиться

Вы можете попробовать мой 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.

13
ответ дан 23 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: