Сериализация полезной нагрузки XML ASP.NET Core не удаласьC#

Место общения программистов C#
Ответить
Anonymous
 Сериализация полезной нагрузки XML ASP.NET Core не удалась

Сообщение Anonymous »

Я создаю конечную точку API, в которой XML действительно полезен для управления данными. Однако сериализация не удалась.
У меня есть три проблемы:
  • Как я могу иметь свойства, допускающие значение NULL? Свойство будет иметь значение null, если соответствующий тег/атрибут не установлен.
  • Как применить ограничения типа? Установка атрибута XmlElement.DataType приводит к сбою сериализации.
  • Почему моя сериализация не удалась?
public class XmlPortfolio
{
[XmlElement("text")]
[JsonPropertyName("text")]
public List TextParts { get; set; } = [];

[XmlElement("card")]
[JsonPropertyName("card")]
public List GameCards { get; set; } = [];
}

public class XmlPortfolioTextPart
{
[XmlAttribute("centered")]
public bool? Centered { get; set; }

[XmlAttribute("header")]
[Range(0, 6)]
public uint? Header { get; set; }

[XmlText]
public string Content { get; set; } = string.Empty;
}

public class XmlGameCard
{
[XmlElement("place-id")]
[JsonPropertyName("place-id")]
public ulong PlaceId { get; set; }

[XmlElement("work-period")]
[JsonPropertyName("work-period")]
public XmlWorkPeriod WorkPeriod { get; set; } = null!;

[StringLength(20, MinimumLength = 5)]
public string Role { get; set; } = string.Empty;
}

public class XmlWorkPeriod
{
[XmlAttribute("begin", DataType = "date")]
public DateOnly Begin { get; set; }

[XmlAttribute("end", DataType = "date")]
public DateOnly? End { get; set; }
}

public class XmlUpdatePortfolioContentRequest
{
[Required]
[XmlElement(ElementName = "schema-version")]
[XmlText]
[JsonPropertyName("schema-version")]
public string SchemaVersion { get; set; } = string.Empty;

[Required]
[XmlElement("portfolio")]
public XmlPortfolio Portfolio { get; set; } = null!;
}

Действие контроллера:
[Consumes("application/xml")]
public async Task Update([FromBody] XmlUpdatePortfolioContentRequest req)
{
return Ok();
}

Мои полезные данные XML


string

Hello World!

0

string




Ответ:
{
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"": [
"An error occurred while deserializing input data."
],
"req": [
"The req field is required."
]
},
"traceId": "00-57f5276ed3d1b4db642be9cad6e86d28-7eb32ac14164d3f9-00"
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... tion-fails
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»