У меня есть объект, и я преобразовываю его в XML, используя модифицированный DataContractSerializer.
Я удаляю все метаданные/пространства имен и т. д., так что результат просто:
<myObject>
<someProperty>5</someProperty>
<mySubObjects>
<mySubObject>...</mySubObject>
<mySubObject>...</mySubObject>
...
</myObject>
и т.п.
Интересно, можно ли вернуть это обратно в объекты.
Я смог частично сделать это, используя JSON.NET, чтобы преобразовать его в JSon, который работает, но есть проблема с десериализацией JSon и списков, которую я не мог понять, несмотря на то, что прочитал несколько объяснений об этом на SO.
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
var obj = JsonConvert.DeserializeObject<T>(jsonText);
Невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип '...', поскольку для правильной десериализации этого типа требуется массив JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивный тип, такой как целое число, а не тип коллекции, такой как массив или список), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализоваться из объекта JSON.
Должно быть более прямое решение, никогда не будет проблемы с попыткой сделать недопустимое приведение, поскольку исходные данные также поступают от объекта, какая-то библиотека сопоставления или что-то еще должно позаботиться об этом. Любые идеи?
XmlDocument
, поэтому он должен быть действительным). Я думаю, мне просто нужно что-то, чтобы перебирать и сопоставлять каждую запись с объектом, но это должно быть достаточно умно, чтобы иметь дело со списками. Я немного уточнил свой вопрос (сегодня очень напряженный!) - person NibblyPig   schedule 22.07.2014There is an error in XML document (1, 133). {"Input string was not in a correct format."}
без каких-либо объяснений того, почему это неправильный формат. Интересно, делает ли он недопустимый бросок? Поскольку у него нет никакой информации о типах данных. - person NibblyPig   schedule 22.07.2014