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

时间:2015-11-10 12:08:16

标签: c# json 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。

这甚至可能吗?

1 个答案:

答案 0 :(得分:3)

如果您使用的是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(); ,则可以使用Linq-to-JSON这样的

执行此操作
JSON

另外,请注意您的,格式不正确,您需要用逗号{ 'buttonPress': 8, <= this 'minutesStreamed': 83 } 分隔对象的属性

{{1}}