У меня есть данные в следующей форме:Более элегантный способ десериализации Json с LINQ?
{
"sections" : [
{
"section" : {
"Term" : "News",
"Term ID" : "4,253"
}
},
{
"section" : {
"Term" : "Sports",
"Term ID" : "4,254"
}
},
// ...
]
}
Я хотел бы сериализации его в коллекции следующего класса:
public class Section
{
public string Name;
public int Tid;
}
Вот код, я использую, чтобы сделать это, используя JSON.NET:
// e.Result is the downloaded JSON
JObject jsonData = JObject.Parse(e.Result);
var sections = jsonData["sections"].Select(obj => obj["section"]).Select(sectData => new Section()
{
Name = HttpUtility.HtmlDecode(sectData["Term"].Value<string>().Replace("\"", "")),
Tid = int.Parse(sectData["Term ID"].Value<string>().Replace(",", ""))
});
foreach (Section s in sections)
{
// _sections is an ObservableCollection<Section>
_sections.Add(s);
}
Он чувствует себя немного неуклюжим. Могу ли я сделать это более элегантно?
Особенно, что foreach
петля в конце. Я бы предпочел использовать такой метод, как addAll
или concat
.
.. или, может быть, мне не хватает точки, кажется, что формат данных отвечает за то, что вы не просто сделали это простым способом? –
есть небольшие несоответствия между форматом данных и моими классами. –