List<T> LINQ to JSON

本文关键字:to JSON LINQ lt List gt | 更新日期: 2024-11-06 23:12:51

我正在创建一个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 的数据选择中?

谢谢。

List<T> LINQ to JSON

您可以直接选择令牌,然后一次性构建对象,即:

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();