我正在创建Windows Phone应用并使用JSON.NET处理数据
好吧,想象一下,你需要List<myObject>
我不知道如何直接制作它,所以我做了以下几点:
IList<string> data1= json["response"].First.Select(data => (string)data.SelectToken("data1")).ToList();
IList<string> data2= json["response"].Last.Select(data => (string)data.SelectToken("data2")).ToList();
IList<string> data3 = json["response"].First.Select(data => (string)data.SelectToken("data3")).ToList();
List<myObject> myList = new List<myObject>();
for (int i = 0; i < data1.Count; i++)
{
myList.Add(data1[i], data2[i], data3[i]);
}
是否可以将所有这些组合成json中的一个数据选择?
谢谢。
答案 0 :(得分:2)
您可以直接选择令牌,并在一次通过中构建对象,即:
List<myObject> myList = json["response"].First.Select(data =>
new myObject(
(string)data.SelectToken("data1"),
(string)data.SelectToken("data2"),
(string)data.SelectToken("data3")
)).ToList();
编辑 -
现在您已编辑,您的数据不再包含单个序列。您可以使用Enumerable.Zip合并这些:
var data1 = json["response"].First.Select(d => new {
d1 = (string)data.SelectToken("data1"),
d3 = (string)data.SelectToken("data3") });
var data2 = json["response"].Last.Select(data => (string)data.SelectToken("data2"));
List<myObject> results = data1.Zip(data2, (d, d2) => new myObject(d.d1, d2, d.d3)).ToList();