Как десериализовать смешанные JSON и XML в классы ⇐ C#
-
Гость
Как десериализовать смешанные JSON и XML в классы
Я получаю строку ответа от Azure DevOps REST API, которая содержит в основном JSON, а также XML, разбросанный по нескольким значениям свойств. Я создаю несколько классов C#, копирующих структуру ответа JSON, чтобы десериализовать ответ.
Когда
var ответ = client.Get(запрос); если (response.StatusCode == HttpStatusCode.OK && ответ.Содержимое!= ноль) { return JsonSerializer.Deserialize(response.Content); } достигает XML в
Поля общедоступного класса { ... [JsonPropertyName("Microsoft.VSTS.TCM.Steps")] общедоступные шаги MicrosoftVSTSTCMSteps {get; набор; } } Я получаю
System.Text.Json.JsonException: 'Значение JSON не удалось преобразовать в ADO.Response.Steps. Путь: $.fields['Microsoft.VSTS.TCM.Steps'] | НомерЛинии: 0 | BytePositionInLine: 5149.'
Класс Steps определяется следующим образом
[XmlRoot(ElementName = "шаги")] Шаги публичного класса { [XmlElement(ElementName = "шаг")] общественный Шаг [] Шаг {получить; набор; } [XmlAttribute(AttributeName = "id")] публичный идентификатор строки {get; набор; } [XmlAttribute(AttributeName = "последний")] публичная строка Last { get; набор; } ... } Отрывок входящей строки JSON/XML выглядит следующим образом:
{ ... "Microsoft.VSTS.TCM.Steps":" ... } Как десериализовать JSON и XML, не отделяя класс Steps от иерархии, например сохраняя XML в виде строки в десериализованном JSON?
Я хочу избежать такой постобработки
XmlSerializer XmlSerializer = новый XmlSerializer(typeof(Steps)); Шаги шаги = (Steps)XmlSerializer.Deserialize(new StringReader(resp.fields.MicrosoftVSTSTCMSteps));
Я получаю строку ответа от Azure DevOps REST API, которая содержит в основном JSON, а также XML, разбросанный по нескольким значениям свойств. Я создаю несколько классов C#, копирующих структуру ответа JSON, чтобы десериализовать ответ.
Когда
var ответ = client.Get(запрос); если (response.StatusCode == HttpStatusCode.OK && ответ.Содержимое!= ноль) { return JsonSerializer.Deserialize(response.Content); } достигает XML в
Поля общедоступного класса { ... [JsonPropertyName("Microsoft.VSTS.TCM.Steps")] общедоступные шаги MicrosoftVSTSTCMSteps {get; набор; } } Я получаю
System.Text.Json.JsonException: 'Значение JSON не удалось преобразовать в ADO.Response.Steps. Путь: $.fields['Microsoft.VSTS.TCM.Steps'] | НомерЛинии: 0 | BytePositionInLine: 5149.'
Класс Steps определяется следующим образом
[XmlRoot(ElementName = "шаги")] Шаги публичного класса { [XmlElement(ElementName = "шаг")] общественный Шаг [] Шаг {получить; набор; } [XmlAttribute(AttributeName = "id")] публичный идентификатор строки {get; набор; } [XmlAttribute(AttributeName = "последний")] публичная строка Last { get; набор; } ... } Отрывок входящей строки JSON/XML выглядит следующим образом:
{ ... "Microsoft.VSTS.TCM.Steps":" ... } Как десериализовать JSON и XML, не отделяя класс Steps от иерархии, например сохраняя XML в виде строки в десериализованном JSON?
Я хочу избежать такой постобработки
XmlSerializer XmlSerializer = новый XmlSerializer(typeof(Steps)); Шаги шаги = (Steps)XmlSerializer.Deserialize(new StringReader(resp.fields.MicrosoftVSTSTCMSteps));
Мобильная версия