При десериализации сообщается, что ожидался объект ArrayOfMyObject, а принимается MyObjects - C#
Формулировка задачи:
при запросе с вебсервиса приходит ответ в виде:
не получается распарсить в List<MyObject>. При десериализации пишет, что ожидался объект ArrayOfMyObject, а принимается MyObjects.
Сделал класс:
Принимает пустой лист, видимо ожидает следующую конструкцию:
Нужно принять List. Как это сделать?
Код десериализатора:
<MyObjects> <MyObject> <id>1</id> <name>test</name> </MyObject> </MyObjects>
[DataContract(Namespace = "")]
public class MyObjects
{
[DataMember]
public List<MyObject> MyObjectList;
}<MyObjects>
<MyObjectList>
<MyObject>
public static T Deserialize<T>(string xml)
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
var serializer = new DataContractSerializer(typeof(T));
T theObject = (T)serializer.ReadObject(stream);
return theObject;
}
}Решение задачи: «При десериализации сообщается, что ожидался объект ArrayOfMyObject, а принимается MyObjects»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApplication20
{
public static class Programm
{
public static void Main()
{
string s = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<MyObjects>
<MyObject>
<id>1</id>
<name>test_1</name>
</MyObject>
<MyObject>
<id>2</id>
<name>test_2</name>
</MyObject>
<MyObject>
<id>3</id>
<name>test_3</name>
</MyObject>
</MyObjects>";
using (var str = new StringReader(s))
{
var ser = new XmlSerializer(typeof (List<MyObject>), new XmlRootAttribute("MyObjects"));
var deserialize = (List<MyObject>)ser.Deserialize(str);
foreach (var myObject in deserialize)
{
Console.WriteLine(myObject);
}
}
}
}
public class MyObject
{
public string id { get; set; }
public string name { get; set; }
public override string ToString()
{
return string.Format("id = {0}, name = {1}", id, name);
}
}
}