Calculate JSON Pointers to each value within a JSON document along with the line, column and character position for the start and end of that value. For more information see: https://github.com/open-alchemy/json-source-map/wiki.
For example:
python -m pip install json_source_map
from json_source_map import calculate
print(calculate('{"foo": "bar"}'))
The above prints:
{
'': Entry(
value_start=Location(line=0, column=0, position=0),
value_end=Location(line=0, column=14, position=14),
key_start=None,
key_end=None,
),
'/foo': Entry(
value_start=Location(line=0, column=8, position=8),
value_end=Location(line=0, column=13, position=13),
key_start=Location(line=0, column=1, position=1),
key_end=Location(line=0, column=6, position=6),
),
}
Where:
- each key in the dictionary is a JSON path to an item,
- each value in the dictionarty contains the mapping of the item at the JSON
path which have the following properties:
value_start
is the start of the value,value_end
is the end of the value,key_start
is the start of the key (which isNone
at the root level and for array items),key_end
is the end of the key (which isNone
at the root level and for array items) and
- each of the above have the following properties:
line
is the zero-indexed line position,column
is the zero-indexed column position andposition
is the zero-indexed character position in the string (independent of the line and column).
The following features have been implemented:
- support for primitive types (
strings
,numbers
,booleans
andnull
), - support for structural types (
array
andobject
) and - support for space, tab, carriage and return whitespace.