Comments (2)
The JMESPath specification says, about the value returned for a search:
The return value for an identifier is the value associated with the identifier. If the identifier does not exist in the JSON document, than a null value is returned.
So if the value associated with the identifier is null
, the specification deliberately conflates that with the “does not exist” case. Hence this library is behaving correctly by the specification.
I maintain the specification is broken by design. The “does not exist” behaviour should, in order to be easily detected, be entirely disjoint from any valid value that could be returned by a match. Raising an exception would be an appropriate implementation.
So that's a bug in the specification. I don't know where to report that.
from jmespath.py.
If you want to check if a key exists in the hash, you can use the contains
function:
>>> import jmespath
>>> foo = {'bar': {'lorem': 13, 'ipsum': None}}
>>> repr(jmespath.search("bar.ipsum", foo))
'None'
>>> repr(jmespath.search("contains(keys(bar), 'ipsum')", foo))
'True'
Let me know if that doesn't work for you.
from jmespath.py.
Related Issues (20)
- Jmespath cannot get the value using [- 1]
- CHANGELOG.rst not updated HOT 1
- Syntax Highlight support for popular IDEs HOT 1
- Space in Key for Custom JSON Object ? HOT 2
- Custom functions can't get literals, the `types` refer to the json element HOT 3
- `TreeInterpreter` creates reference cycle, causing GC pressure HOT 2
- Usage Questions HOT 2
- Review compliance with respect to control chars in `raw-string` literals.
- False positive with mypy HOT 1
- can jmespath support parse json-key with chinese like the next example HOT 1
- how to install jmespath==1.0.1 HOT 1
- Struggling with usage of Merge function HOT 1
- Infrastructure things HOT 1
- CVE-2022-32511 Help HOT 1
- Unexpected mutations when using list or object literals in expressions
- Allow recursive root-level wildcards
- Facing issue while using jmespath in docker HOT 1
- OSSFuzz Integration
- Perfect, thank you @searsinvestmentinc.com
- How to pass string with backslash at end to json_query HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jmespath.py.