.NET Core json Сериализация свойств динамического (ExpandoObject)
У меня есть веб-api в .NET Core 1.0, и мне нравится новая функция, которая по умолчанию имеет сериализацию camelCasing вместо PascalCasing.
Однако некоторые из моих api-методов возвращают dynamic
или ExpandoObject
, а свойства на них сериализуются так, как они есть, что означает, если я добавлю их в динамический объект как PascalCasing, тогда как они будут сериализованы.
Я полагаю, потому что динамический объект тесно связан с Dictionary<string, object>
и почему он ведет себя по-другому.
Как сделать dynamic
сериализованным с camelCasing красивым способом?
(Я мог бы сделать это заново создав словарь в каждом возвращенном динамике с помощью строчного ключа, прежде чем возвращать их из API, но я ищу довольно хороший способ достижения цели)
Ответы
Ответ 1
Это можно решить с помощью Startup.cs → ConfigureServices:
services.AddMvc().AddJsonOptions(opt =>
{
opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
Здесь упоминается несколько мест, которые теперь являются поведением по умолчанию для ASP.NET Core 1.0, но это на самом деле не так. Добавление этой строки влияет на динамические свойства, и по умолчанию это не влияет.