Переименовать поле в JsonSerializer


У меня есть библиотека классов, которую я должен вывести через JsonResult в ASP.NET фреймворк MVC. (JsonResult использует JsonSerializer для получения своих выходных данных.)

Прочитав документацию, я обнаружил, что если поместить [ScriptIgnore] в публичное свойство/поле, оно не будет сериализовано, как [XmlIgnore] для XML-сериализатора.

Мне нужна эквивалентная функциональность [XmlElement("elementname")], которая абсолютно точно определяет имя поля / свойства в выходной сериализации. У меня есть поле. вызывается Elements , который должен быть сериализован в поле с именем elements.

Как я могу сделать это, используя стандартный JsonSerializer?

Спасибо, Дэвид

2 4

2 ответа:

Вы используете классDataContractJsonSerializer ?

Если так ...

Добавьте этот атрибут в поле Elements

[DataMember(Name = "elements")] 

Это поэтому вопрос предполагает, как переопределить использование JsonScriptSerializer для JsonDataContractSerializer.

Доброта,

Дан

К сожалению, вы не можете этого сделать. Тем не менее, в настоящее время я разрабатываю модуль, который расширит любой объект, создав во время выполнения анонимный объект, который будет следовать правилам из атрибутов, таких как JsonIgnore или JsonProperty. Я опубликую больше, когда у меня что-то будет.