Skip to main content

Search through JSON data key:values

Project description

jsonparse: ctrl-f for json

PyPI - Python Version GitHub tag (latest SemVer) jsonparse codecov


jsonparse is a simple JSON parsing library. Extract what's needed from key:value pairs.

What's New

  • New public (or hostable) web API :tada:

Python Library

Install

pip install jsonparse

Quickstart

Here is a quick example of what jsonparse is able to do.

from jsonparse import Parser

p = Parser()

data = [{
    "key0":
    {
        "key1": "result",
        "key2":
        {
            "key1": "result1",
            "key3": {"key1": "result2"}
        }
    }
}]

p.find_key(data, 'key1')
['result2', 'result1', 'result']

p.find_key_chain(data, ['key0', 'key2', 'key3', 'key1'])
['result2']

API

The API examples using the following test data.

data = [
    {"key": 1},
    {"key": 2},
    {"my": 
        {"key": 
            {
                "chain": "A",
                "rope": 5,
                "string": 1.2,
                "cable": False
            }
        }
    },
    {"your":
    	{"key":
            {
                "chain": "B",
                "rope": 7,
                "string": 0.7,
                "cable": True
            }
    	}
    }
]

Parser

Parser(stack_trace: bool = False, queue_trace: bool = False)

    Optionally instantiate the Parser class with tracing to print out the underlying data structures.

p = Parser(stack_trace=True, queue_trace=True)

find_key

find_key(data: dict | list, key: str) -> list

    Will return all values of the matched key.

p.find_key(data, 'chain')
['A', 'B']

p.find_key(data, 'key')
[1, 2, {'chain': 'A', 'rope': 5, 'string': 1.2, 'cable': False}, {'chain': 'B', 'rope': 7, 'string': 0.7, 'cable': True}]

find_keys

find_keys(data: dict | list, keys: list, group: bool = True) -> list

    The default return value is a two dimensional list. [ [], [], ...].

    To return all values as a one dimensional list, set group=False.

    The ordering of the keys does not matter.

p.find_keys(data, ['rope', 'cable'])
[[5, False], [7, True]]

p.find_keys(data, ['rope', 'cable'], group=False)
[5, False, 7, True]

find_key_chain

find_key_chain(data: dict | list, keys: list) -> list

    The key chain is an ordered list of keys. The chain needs to start at the root level of the nested data.

    Wildcard * can be used as key(s) to match any.

p.find_key_chain(data, ['my', 'key', 'chain'])
['A']

p.find_key_chain(data, ['key'])
[1, 2]

p.find_key_chain(data, ['*', 'key', 'chain'])
['A', 'B']

p.find_key_chain(data, ['*', 'key', '*'])
['A', 5, 1.2, False, 'B', 7, 0.7, True]

find_key_value

find_key_value(data: dict | list, key: str, value: str | int | float | bool | None) -> list

    The returned list contains the dictionaries that contain the specified key:value pair.

p.find_key_value(data, 'cable', False)
[{'chain': 'A', 'rope': 5, 'string': 1.2, 'cable': False}]

p.find_key_value(data, 'chain', 'B')
[{'chain': 'B', 'rope': 7, 'string': 0.7, 'cable': True}]

Web API

Documentation

Visit the swagger API documentation

Quickstart

Let's practice using the public, free-to-use-no-authentication, web API hosted in GCP Cloud Run.

curl -X POST "https://jsonparse.dev/v1/key/key1" \
-H 'Content-Type: application/json' \
-d '[{"key0":{"key1":"result","key2":{"key1":"result1","key3":{"key1":"result2"}}}}]'

["result2","result1","result"]

OR

import requests

data = [{
    "key0":
    {
        "key1": "result",
        "key2":
        {
            "key1": "result1",
            "key3": {"key1": "result2"}
        }
    }
}]

requests.post('https://jsonparse.dev/v1/key/key1', json=data).json()

['result2', 'result1', 'result']

Self-Hosted

pip install "jsonparse[webapi]"

gunicorn -b 0.0.0.0:8000 jsonparse.webapi:app

Alternatively, run the docker container

docker run -d ctomkow/jsonparse

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

jsonparse-0.11.1.tar.gz (9.2 kB view hashes)

Uploaded Source

Built Distribution

jsonparse-0.11.1-py3-none-any.whl (7.9 kB view hashes)

Uploaded Python 3

Supported by

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