Skip to main content

Extensions for JSONPath RW

Project description

https://travis-ci.org/sileht/python-jsonpath-rw-ext.png?branch=master Latest Version Downloads

Extensions for JSONPath RW

jsonpath-rw-ext extends json-path-rw capabilities by adding multiple extensions. ‘len’ that allows one to get the length of a list. ‘sorted’ that returns a sorted version of a list, ‘arithmetic’ that permits one to make math operation between elements and ‘filter’ to select only certain elements of a list.

Each extensions will be proposed upstream and will stay here only if they are refused.

Quick Start

At the command line:

$ pip install jsonpath-rw-ext

Or, if you have virtualenvwrapper installed:

$ mkvirtualenv jsonpath-rw-ext
$ pip install jsonpath-rw-ext

To replace the jsonpath_rw parser by this one with:

import jsonpath_rw_ext
jsonpath_rw_ext.parse("$.foo").find(...)

Or:

from jsonpath_rw_ext import parser
parser.ExtentedJsonPathParser().parse("$.foo").find(...)

Shortcut functions for getting only the matched values:

import jsonpath_rw_ext as jp
print jp.match('$.cow[*]', {'cow': ['foo', 'bar'], 'fish': 'foobar'})
# prints ['foo', 'bar']

print jp.match1('$.cow[*]', {'cow': ['foo', 'bar'], 'fish': 'foobar'})
# prints 'foo'

The jsonpath classes are not part of the public API, because the name/structure can change when they will be implemented upstream. Only the syntax shouldn’t change.

Extensions

name

Example

len

  • $.objects.`len`

sub

  • $.field.`sub(/foo\\+(.*)/, \\1)`

split

  • $.field.`split(+, 2, -1)`

  • $.field.`split(sep, segement, maxsplit)`

sorted

  • $.objects.`sorted`

  • $.objects[\some_field]

  • $.objects[\some_field,/other_field]

filter

  • $.objects[?(@some_field > 5)]

  • $.objects[?some_field = “foobar”)]

  • $.objects[?some_field > 5 & other < 2)]

arithmetic (-+*/)

  • $.foo + “_” + $.bar

  • $.foo * 12

  • $.objects[*].cow + $.objects[*].cat

About arithmetic and string

Operations are done with python operators and allows types that python allows, and return [] if the operation can be done due to incompatible types.

When operators are used, a jsonpath must be be fully defined otherwise jsonpath-rw-ext can’t known if the expression is a string or a jsonpath field, in this case it will choice string as type.

Example with data:

{
    'cow': 'foo',
    'fish': 'bar'
}
cow + fish returns cowfish
$.cow + $.fish returns foobar
$.cow + “_” + $.fish returns foo_bar
$.cow + “_” + fish returns foo_fish

About arithmetic and list

Arithmetic can be used against two lists if they have the same size.

Example with data:

{'objects': [
    {'cow': 2, 'cat': 3},
    {'cow': 4, 'cat': 6}
]}
$.objects[*].cow + $.objects[*].cat returns [6, 9]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonpath-rw-ext-1.1.3.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jsonpath_rw_ext-1.1.3-py2.py3-none-any.whl (17.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file jsonpath-rw-ext-1.1.3.tar.gz.

File metadata

File hashes

Hashes for jsonpath-rw-ext-1.1.3.tar.gz
Algorithm Hash digest
SHA256 060f75ab1920b32e626b08d3ab086262fa624d4b32c35eba077c5f075e003ef5
MD5 2ef38954a56edac95b459fcb1bcbc035
BLAKE2b-256 30bb07f61381551d4ab45f3ab62d740c25962069961c35e5a81a9c9237d0a533

See more details on using hashes here.

File details

Details for the file jsonpath_rw_ext-1.1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for jsonpath_rw_ext-1.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0c8ab2a60cb319fcebf602e7ba95c7f9156081000d48820643da614c0a1b0e81
MD5 d984c078db2cbd62646c72689fb467af
BLAKE2b-256 9c5105fa4a86e50e0c7d551bcef3f2900bf6c5654819ca3d89c97838e9411411

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page