Получить дочерние элементы XElement как верхний уровень объекта - PullRequest
0 голосов
/ 06 апреля 2020

При использовании API XElement и запросе определенного элемента (через .Element("Foo")) я получаю обратно объект, который при сериализации до JSON (с использованием ASP. NET Core) приводит к объект с единственным полем (Foo), который затем содержит все дочерние объекты Foo.

Как сделать так, чтобы все дочерние объекты Foo содержались на верхнем уровне сериализованного объекта ? Метод .Elements() возвращает мне элементы, но я не хочу, чтобы они были коллекцией, я хочу, чтобы они были полями объекта.

1 Ответ

0 голосов
/ 06 апреля 2020

Если вы не удовлетворены тем, как сериализатор XElement сериализуется стандартным сериализатором, у вас в основном есть два варианта.

  1. Создайте свой собственный тип и сериализуйте экземпляры этого.

  2. Создайте пользовательский конвертер для XElement или вашего пользовательского типа.

Если вы используете System.Text. Json, который является значением по умолчанию в ASP. NET Core 3.x, вы наследуете от System.Text.Json.Serialization.JsonConverter<T> и переопределяете методы Read и Write.

Если вы все еще используете Newtonsoft. Json, вы наследуете от Newtonsoft.Json.JsonConverter<T> и переопределяете методы ReadJson и WriteJson.

...