Match json with lucece-like query
Project description
# json_matcher
Match json object with query like elasticsearch/lucene query.
examples (jrep)
# cat a.txt { “foo”: “bar”, “bar”: “foo” } # jrep “foo:bar” /tmp/a.txt { “foo”: “bar”, “bar”: “foo” }
examples (json_matcher)
>>> import json_matcher >>> matcher = json_matcher.compile('foo:bar bar:foo') >>> j = dict(foo='bar', bar='foo') >>> m = matcher.match(j) >>> m.groups() [('foo', 'bar'), ('bar', 'foo')]>>> matcher = json_matcher.compile('foo:>10 bar:foo') >>> j = dict(foo=11, bar='foo') >>> matcher.match(j).groups() [('foo', 11), ('bar', 'foo')] >>> j = dict(foo=9, bar='foo') >>> matcher.match(j) >>> m = matcher.match(j) >>> print(m) None>>> json_matcher.match('foo:[10 TO 20] AND bar:foo', dict(foo=11, bar='foo')).groups() [('foo', 11), ('bar', 'foo')]>>> nested = dict(A=dict(B=dict(C='Hello World'))) >>> json_matcher.match('A.B.C:"Hello World"', nested).groups() [('A.B.C', 'Hello World')]
match text or number with `field_name:value`
match regular expression with `field_name:/regular expression/`
match range with `field_name:[10 TO 20]`, `field_name:[10 TO 20}` (exclusive 20)
match range(open range) with `field_name:>20` (like elasticsearch not lucene)
match field existence with `_exists_:field_name`
match expression with `_expression:"python expression"`
- TODO:
multiple match with high performace (with Ahocorasik and RE2???)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for json_matcher-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 012e90124b1439e57529b8e56ec0a680499d4e8f88367e89cbb5db12527fd5d9 |
|
MD5 | aea0023d7581cfc45fa0a52502b1c483 |
|
BLAKE2b-256 | e7fb00c6678c97d1db2ef4d8d0ea46d7d7060c3973ef0a387836b3afb6142bbf |