2017-09-06 163 views
0

我想将System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken]转换为JSON数组。Convert System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken] List to Json Array c#

起初我不得不存储在myDataJSON数组的字符串如下:

var myData = l.GetJsonData(); 

那么现在我过滤JsonLINQ如下的帮助:

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],how我可以让它显示Json数组字符串中的排序数据。

回答

1

只是简单地添加以下以下:

var values = root.Where(t => 
    (int?)t["term"] == term && (string)t["study_year"] == study_year).ToList(); 
    var filteredJson = JsonConvert.SerializeObject(values); 
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 
    } 
]