将System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken]列表转换为Json数组c#

时间:2017-09-06 10:18:27

标签: c# json linq

我想将System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken]转换为JSON数组。

最初我将 JSON数组字符串存储在myData中,如下所示:

var myData = l.GetJsonData();

现在我在Json的帮助下过滤我的LINQ,如下所示:

 var root = JToken.Parse(myData);
    var study_year = "2016/2017";
    var term = 2;var values = root.Where(t =>
 (int?)t["term"] == term && (string)t["study_year"] == study_year).ToList();

现在values是一个有排序数据但不是Json格式的它显示System.Collections.GenericList'1[Newtonsoft.Json.Linq.JToken],如何让它显示Json数组字符串中的排序数据。

2 个答案:

答案 0 :(得分:1)

从列表中创建一个JArray,其中列表作为构造函数参数。一旦你得到JArray就调用ToString()。

    var root = JToken.Parse("[ {\"name\" : \"a\", value : 40 },{\"name\" : \"b\", value : 10 }, {\"name\" : \"c\", value : 25 }  ]");

    var filtered = root.Where(t => (int?)t["value"] > 15 ).ToList();

    var jArray = new JArray(filtered);

    Console.WriteLine(jArray.ToString());

以上将输出以下内容

[
  {
    "name": "a",
    "value": 40
  },
  {
    "name": "c",
    "value": 25
  }
]

答案 1 :(得分:0)

只需添加以下内容:

 var values = root.Where(t =>
     (int?)t["term"] == term && (string)t["study_year"] == study_year).ToList();
    var filteredJson = JsonConvert.SerializeObject(values);