繁体   English   中英

使用Json.Net查询带有过滤器的Json

[英]Querying Json with filters using Json.Net

在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 ,你可以像这样使用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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM