【问题标题】:JSON-Path for objects that contain JSON array with specific entry包含具有特定条目的 JSON 数组的对象的 JSON 路径
【发布时间】:2021-04-29 00:12:35
【问题描述】:

我有一个 JSON 对象,其中包含与足球比赛相关的事件列表,如下所示。

我正在使用 Newtonsoft 的 Json.NET 框架。在所述 JSON-Object 中,什么是 JSON-Path(在 Json.NET 的 JSONPath 实现中工作)仅查找存在具有 type.displayName'Yellow'' 的限定符的事件(即,仅返回的 JSON 路径第二个事件,因为这个事件具有所需的限定符)?

这是在 .NET 中,所以如果有办法为此使用 LINQ,我愿意接受。

{
    "events": [
        {
            "eventId": 490,
            "minute": 54,
            "second": 23,
            "period": {
                "value": 2,
                "displayName": "SecondHalf"
            },
            "type": {
                "value": 19,
                "displayName": "SubstitutionOn"
            },
            "outcomeType": {
                "value": 1,
                "displayName": "Successful"
            },
            "qualifiers": [
                {
                    "type": {
                        "value": 55,
                        "displayName": "RelatedEventId"
                    },
                    "value": "489"
                },
                {
                    "type": {
                        "value": 59,
                        "displayName": "JerseyNumber"
                    },
                    "value": "11"
                }
            ],
            "satisfiedEventsTypes": [
                212
            ],
            "isTouch": false
        },
        {
            "eventId": 669,
            "minute": 75,
            "second": 5,
            "period": {
                "value": 2,
                "displayName": "SecondHalf"
            },
            "type": {
                "value": 17,
                "displayName": "Card"
            },
            "outcomeType": {
                "value": 1,
                "displayName": "Successful"
            },
            "qualifiers": [
                {
                    "type": {
                        "value": 13,
                        "displayName": "Foul"
                    },
                    "value": "243"
                },
                {
                    "type": {
                        "value": 31,
                        "displayName": "Yellow"
                    }
                }
            ],
            "isTouch": false
        }
    ]
}

【问题讨论】:

    标签: json linq json.net jsonpath


    【解决方案1】:

    事实证明,Json.Net 中正确的 JSON-Path 应该是

    $.events[?(@.qualifiers..type.displayName == 'Yellow')]
    

    具体来说,deepscan 运算符.. 是必要的,因为所讨论的 JSON 可能包含每个事件的多个限定符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2021-09-22
      相关资源
      最近更新 更多