From eb7caf2d815caba3c9fe80c3de24cc8b82f1771b Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Sun, 30 Aug 2026 00:26:27 +0200 Subject: [PATCH] Preserve explicit null hash fields --- lib/jmespath/nodes/field.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/jmespath/nodes/field.rb b/lib/jmespath/nodes/field.rb index d1c1327..4aa777a 100644 --- a/lib/jmespath/nodes/field.rb +++ b/lib/jmespath/nodes/field.rb @@ -13,10 +13,10 @@ def visit(value) value.to_ary[@key] elsif value.respond_to?(:to_hash) value = value.to_hash - if !(v = value[@key]).nil? - v - elsif @key_sym && !(v = value[@key_sym]).nil? - v + if value.key?(@key) + value[@key] + elsif @key_sym && value.key?(@key_sym) + value[@key_sym] end elsif value.is_a?(Struct) && value.respond_to?(@key) value[@key] @@ -52,10 +52,10 @@ def visit(obj) value.to_ary[key] elsif value.respond_to?(:to_hash) value = value.to_hash - if !(v = value[key]).nil? - v - elsif (sym = @key_syms[key]) && !(v = value[sym]).nil? - v + if value.key?(key) + value[key] + elsif (sym = @key_syms[key]) && value.key?(sym) + value[sym] end elsif value.is_a?(Struct) && value.respond_to?(key) value[key]