Get values from JSON objects using a path expression
Project description
Get values from JSON objects usings a path expression. Optional type checking is possible:
>>> from jsonget import json_get, json_get_default, JList >>> j = { ... "foo": {"num": 3.4, "s": "Text"}, ... "arr": [10, 20, 30], ... } >>> json_get(j, "/foo/num") 3.4 >>> json_get(j, "/arr[1]") 20 >>> json_get(j, "/foo/unknown") Traceback (most recent call last): ... ValueError: JSON path '/foo/unknown' not found
Values are optionally checked against one of the following types: str, int, float, bool, list, and dict. Checking for null values is not supported:
>>> json_get(j, "/foo/num", str) Traceback (most recent call last): ... TypeError: wrong JSON type str != float
float will match any number, int will only match numbers without a fractional part:
>>> json_get(j, "/foo/num", float) 3.4 >>> json_get(j, "/foo/num", int) Traceback (most recent call last): ... TypeError: wrong JSON type int != float
Additionally, the type of list values can be checked:
>>> json_get(j, "/arr", JList(int)) [10, 20, 30]
json_get_default() can be used to return a default value if a given path does not exist:
>>> json_get_default(j, "/bar", "default value") 'default value'