Json.Net SelectToken 查询不工作
Json.Net SelectToken Query not working
我有一个这样的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 中 运行 它 returns 什么都没有。
所以我尝试了以下认为它可能是字符串
$.office.generators[?(@.covered == true)]
它可以在在线工具和 json.net 中使用。所以我尝试了以下想法,认为它可能是连字符
$.office.generators[?(@.make == 'Broom Broom')]
同样,它在两者中都运行良好。我的第一个查询有什么问题?
谢谢
找到问题了。 json _id 字段被转换为 Guid 类型的 JValue 但表达式 JValue 被转换为 String 因此当 "BooleanQueryExpression" 进行此比较时
if (v != null && v.Equals(Value))
那就不相等了。
我在 github
上提交了一个问题
我有一个这样的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 中 运行 它 returns 什么都没有。
所以我尝试了以下认为它可能是字符串
$.office.generators[?(@.covered == true)]
它可以在在线工具和 json.net 中使用。所以我尝试了以下想法,认为它可能是连字符
$.office.generators[?(@.make == 'Broom Broom')]
同样,它在两者中都运行良好。我的第一个查询有什么问题?
谢谢
找到问题了。 json _id 字段被转换为 Guid 类型的 JValue 但表达式 JValue 被转换为 String 因此当 "BooleanQueryExpression" 进行此比较时
if (v != null && v.Equals(Value))
那就不相等了。
我在 github
上提交了一个问题