Преобразование строки Json в объект c#
К примеру имеем такой Json :var jsonStr=@"{
"one": "value",
"two": [
[
"123",
"325",
"string",
"0.10"
],
[
"k",
"1.0",
"20.04.2004",
""
]
],
"three": [
"29",
"1.0",
"13.10.2000",
""
]
}";
Чтобы преобразовать его в объект c# подключаем пространство имен System.Web.Script.Serialization;
Затем создаем класс, описывающий наш объект. В Visual Studio 2012 есть возможность вставить JSON - код как класс, достаточно лишь поместить нужный экземпляр в буфер обмена (скопировать) и в студии нажать Edit - Paste special - Paste JSON as Classes (Правка - Специальная вставка - Вставить JSON как классы):
public class TestИ получаем результат двумя строчками:
{
public string one {get;set;}
public List<List<string>> two{ get; set; }
public List<string> three{ get; set; }
}
var jss = new JavaScriptSerializer();Кстати, JSONLint - отличный способ проверить и отформатировать ваш Json.
var result = jss.Deserialize<Test>(jsonStr));
Преобразование строки XML в объект c#
Имеем такой XML:
var xmlStr=@"<?xml version="1.0" encoding="UTF-8"?>
<Root>
<One>value</One>
<Three>
<element>29</element>
<element>1.0</element>
<element>13.10.2000</element>
<element />
</Three>
<Two>
<element>
<element>123</element>
<element>325</element>
<element>string</element>
<element>0.10</element>
</element>
<element>
<element>k</element>
<element>1.0</element>
<element>20.04.2004</element>
<element />
</element>
</Two>
</Root>";
В Visual Studio 2012 есть возможность вставить XML код как класс, достаточно лишь поместить нужный экземпляр в буфер обмена (скопировать) и в студии нажать Edit - Paste special - Paste XML as Classes (Правка - Специальная вставка - Вставить XML как классы). Проверить свой XML-код можно тут.
Получили следующий класс:
[XmlTypeAttribute(AnonymousType = true)]
[XmlRootAttribute(Namespace = "", IsNullable = false)]
public class Root
{
public string One { get; set; }
[XmlArrayItemAttribute("element", IsNullable = false)]
public string[] Three { get; set; }
[XmlArrayItemAttribute("element", IsNullable = false),
XmlArrayItemAttribute("element", IsNullable = false, NestingLevel = 1)]
public string[][] Two { get; set; }
}
public static Root DeserializeFromXML(string xmlStr)
{
private var result = "";
var deserializer = new XmlSerializer(typeof(Root));
using (var reader = new StringReader(xmlStr))
result = (Root)deserializer.Deserialize(reader);
return result;
}