【问题标题】:Convert System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken] List to Json Array c#将 System.Collections.GenericList'1 [Newtonsoft.Json.Linq.JToken] 列表转换为 Json 数组 c#
【发布时间】:2017-09-06 10:18:26
【问题描述】:

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

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

var myData = l.GetJsonData();

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

 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 数组字符串中显示排序数据。

【问题讨论】:

    标签: c# json linq


    【解决方案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
      }
    ]
    

    【讨论】:

      【解决方案2】:

      只需在下面添加以下内容:

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

      【讨论】:

        猜你喜欢
        • 2015-08-26
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 2022-09-24
        • 1970-01-01
        • 2020-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多