【问题标题】:Json.Net SelectToken Query not workingJson.Net SelectToken 查询不起作用
【发布时间】:2015-09-03 13:28:36
【问题描述】:

我有一个这样的 JSON 对象

"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
      }
    ]
}

我有一个这样的查询:

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

如果我在 HERE 等一些在线工具上运行它:

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

所以我尝试了以下认为它可能是字符串

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

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

$.office.generators[?(@.make == 'Broom Broom')]

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

谢谢

【问题讨论】:

    标签: c# json.net jsonpath


    【解决方案1】:

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

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

    那么它不等于。

    我在github提交了一个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2013-09-04
      • 2011-11-29
      • 1970-01-01
      相关资源
      最近更新 更多