Сериализатор Newsonoft Json не использует переопределения имен свойств, определенных JsonPropertyAttribute - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть такой простой класс, который я хотел бы сериализовать и отправить клиенту в нотации верблюда.

Я объявил класс в C # в соответствии с обычной нотацией Паскаля.

Я также установил атрибут JsonProperty для каждого свойства с переопределением имени следующим образом.

using Newtonsoft.Json;

namespace Code.ViewModels
{
    public class ArticleCategoryListItem
    {
        [JsonProperty(PropertyName = "value")]
        public string Value { get; set; }

        [JsonProperty(PropertyName = "label")]
        public string Label { get; set; }
    }
}

Однако мой клиент по-прежнему получает имена свойств регистра Pascal.

Я пытался очистить кэш ASP.NET, очистить сборку и перестроить решение, а затем перезапустить Visual Studio, но все безрезультатно.Что происходит?

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Насколько я могу судить из исходного кода, JSON.Net не используется JsonResult .

Вместо этого используется JavaScriptSerializer .

Я не уверен на 100%, что используемая вами версия не использует JSON.Net, но если этого не произойдет, это, очевидно, объяснит, почему атрибуты не соблюдаются.

Ранее я использовал JsonDotNetResult в подобных ситуациях.

0 голосов
/ 14 сентября 2018

Вы должны установить JsonSerializationSetting для дело верблюда ContractResolver = new CamelCasePropertyNamesContractResolver()

и использовать как JsonConvert.SerializeObject(object, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });

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