При десериализации сообщается, что ожидался объект 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д