使用Json.Net使用筛选器查询Json

本文关键字:Json 查询 筛选 Net 使用 | 更新日期: 2023-09-27 18:21:24

在C#中,我使用Json.net尝试检索'buttonPress'的总和,其中'minutesStreamed'超过60。

string json = @"
{
    'results': [
    {
        'buttonPress': 8,
        'minutesStreamed': 83
    },
    {
        'buttonPress': 3,
        'minutesStreamed': 4
    },
    {
        'buttonPress': 7,
        'minutesStreamed': 61
    }
        ]
    }";

我做了这个(下面),它检索了整个列的总和,但我找不到过滤掉minutesStreamed>60的任何内容的方法。

JObject obj = JObject.Parse(json);
var buttonPresses=
    from p in obj["results"]
    select (int)p["buttonPress"];
int sum = buttonPresses.Sum();

如果工作正常,所需输出将为15。

这可能吗?

使用Json.Net使用筛选器查询Json

如果您使用Json.NET,您可以像一样使用Linq-to-JSON

var jsonString = File.ReadAllText(@"C:'YourDirectory'results.json");
var jObj = JObject.Parse(jsonString);
var sum = jObj["results"]
            .Where(r => (int)r["minutesStreamed"] > 60)
            .Select(r => (int)r["buttonPress"])
            .Sum();

另外,请注意,您的JSON格式不好,您需要像下面的一样用逗号,分隔对象的属性

{
    'buttonPress': 8, <= this
    'minutesStreamed': 83
}