Ошибка десериализации Xml - ответа в C#
Привет, у меня есть один сервис веб-API, где я получаю XML-ответ, мой веб-API выглядит следующим образом
public Task<Dictionary<long, string>> GetXMLResponse() { Dictionary<long, string> dic = new Dictionary<long, string>(); dic.Add(1, "a"); dic.Add(2, "b"); return dic; }
Теперь я вызываю эту службу из своего оконного приложения следующим образом
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response != null) { using (var streamReader = new StreamReader(response.GetResponseStream())) { XmlSerializer obj = new XmlSerializer(typeof(List<MyClass>)); List<MyClass> class1 = (List<MyClass>)obj.Deserialize(streamReader); }
Мой класс такой
public class MyClass { [XmlElement(ElementName = "Key")] public long Key { get; set; } [XmlElement(ElementName = "Value")] public string Value { get; set; } }
Но когда я собираюсь десериализовать его, то получаю ошибку типа
Цитата:Существует ошибка в XML - документе (1, 2).
и внутреннее исключение-это
Цитата:<arrayofkeyvalueoflongstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> не ожидалось.
Ответ на что я становлюсь похожим
<?xml version="1.0"?> -<ArrayOfKeyValueOflongstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> -<KeyValueOflongstring> <Key>1</Key> <Value>a</Value> </KeyValueOflongstring> -<KeyValueOflongstring> <Key>2</Key> <Value>b</Value> </KeyValueOflongstring> </ArrayOfKeyValueOflongstring>
Что я уже пробовал:
Сначала я попытался десериализоваться непосредственно в словарь, но у меня была ошибка, а затем я попытался создать этот класс.
Заранее спасибо, пожалуйста, не могли бы вы помочь мне десериализовать его, с помощью объекта json его легко десериализовать, но XML-ответ я застрял.
Пожалуйста, помогите мне.
заранее спасибо
F-ES Sitecore
Сделайте также GetXMLResponse return List<MyClass & gt;. Не все объекты (например, словарь) будут поддерживать сериализацию. Единственный способ гарантировать, что вы можете сериализовать вещи, - это убедиться, что они имеют атрибут [Serializable], или создать свои собственные классы, которые, как вы знаете, могут быть сериализованы.
Member 10192073
Привет, когда же я пытаюсь попасть в Json, а затем десериализоваться в словарь, то в этот раз он работает нормально, но я должен реализовать его с помощью Xml-ответа в моем проекте и модульном тестировании.
Когда ответ в Json в это время
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
ВАР результат = что streamreader.ReadToEnd();
dic = JsonConvert.DeserializeObject<dictionary<long, string="">>(результат);
}
этих строк достаточно для десериализации строки json