Json.Net SelectToken查询不起作用

时间:2015-09-03 13:28:36

标签: c# json.net jsonpath

我有一个像这样的JSON对象

<button type="button" disabled="disabled" onclick='alert("test");'>
    <span>Click me!</span>
</button>

我有这样的查询:

"office": {
    "parkingRatio": 12.0,
    "hasGenerators": true,
    "generators": [
      {
        "_id": "ff2dc672-6e15-4aa2-afb0-18f4f69596ad",
        "office_id": "b62ce2c1-5fa2-4eee-9ce8-e04a2c3e6513",
        "make": "Broom Broom",
        "covered": true,
        "output": 1234.0
      }
    ]
}

如果我在一些在线工具上运行此功能,例如HERE

它工作正常,并给我整个数组项,但如果我在json.net v7中运行它,它什么都不返回。

所以我尝试了以下思考它可能是字符串

$.office.generators[?(@._id =='ff2dc672-6e15-4aa2-afb0-18f4f69596ad')]
$.office.generators[?(@.office_id == 'b62ce2c1-5fa2-4eee-9ce8-e04a2c3e6513')]

它适用于在线工具和json.net。所以我尝试了以下思考它可能是连字符

$.office.generators[?(@.covered == true)]

而且两者都可以正常工作。我的第一个查询出了什么问题?

由于

1 个答案:

答案 0 :(得分:2)

发现问题。 json _id字段被转换为Guid类型的JValue,但表达式JValue被转换为String,因此当“BooleanQueryExpression”执行此比较时

if (v != null && v.Equals(Value))

然后它不相等。

我在github

上提交了一个问题