#boolean #jmespath
Вопрос:
У меня есть JSON со значением true, я хочу вернуть значение false.
Ниже приведен пример:
{"a": {"City": "Hello", "flag": false}}
Я звоню a.flag
, чтобы получить false
значение. Однако я не смог придумать способ преобразования false
в true
.
Я пробовал a.flag == false
в https://jmespath.org/tutorial.html но это работает неправильно.
Комментарии:
1. Опубликовано слишком рано! Я нашел решение. Если вы заключите путь JMESPATH в круглые скобки, а затем поставите a
!
впереди, в возвращает противоположное. Бывший)! (a.flag)
Ответ №1:
Ваша попытка не работает, потому что ваше false
значение неправильно интерпретируется в условии a.flag == false
.
Что вы действительно делаете, когда делаете a.flag == false
, так это сравниваете значение ключа false
вашего объекта JSON со значением a.flag
.
Способ подтвердить это — выполнить запрос:
foo.flag == false
Над этими двумя JSON
-
{ "false": "some value", "foo": { "city": "Brussels", "flag": "some value" } }
который вернется
true
-
{ "false": "some other value", "foo": { "city": "Brussels", "flag": "some value" } }
который вернется
false
Правильный способ сравнить значение с логическим значением в JMESpath-это использовать буквальное выражение и, таким образом, поместить логическое значение `true`
в обратные ссылки .
С запросом:
foo.flag == `false`
Через JSON
{
"foo": {
"city": "Brussels",
"flag": false
}
}
Мы получаем ожидаемое: true
И, конечно, как вы это прокомментировали, вы можете просто использовать не-выражение:
!(foo.flag)