common.jsonpath
TJsonPath
Jsonpath compiled or str
TAnyJsonPath
A single or multiple jsonpaths
delete_matches
def delete_matches(paths: TAnyJsonPath, data: DictStrAny) -> None
Remove all keys from data
matching any of given json path(s).
Filtering is done in place.
find_values
def find_values(path: TJsonPath, data: DictStrAny) -> List[Any]
Return a list of values found under the given json path
resolve_paths
def resolve_paths(paths: TAnyJsonPath, data: DictStrAny) -> List[str]
Return a list of paths resolved against data
. The return value is a list of strings.
Example:
resolve_paths('$.a.items[*].b', {'a': {'items': [{'b': 2}, {'b': 3}]}})
# ['a.items.[0].b', 'a.items.[1].b']
is_simple_field_path
def is_simple_field_path(path: JSONPath) -> bool
Checks if the given path represents a simple single field name.
Example:
is_simple_field_path(compile_path('id'))
True
is_simple_field_path(compile_path('$.id'))
False
extract_simple_field_name
def extract_simple_field_name(path: Union[str, JSONPath]) -> Optional[str]
Extracts a simple field name from a JSONPath if it represents a single field access. Returns None if the path is complex (contains wildcards, array indices, or multiple fields).
Arguments:
path
- A JSONPath object or string
Returns:
Optional[str]
- The field name if path represents a simple field access, None otherwise
Example:
extract_simple_field_name('name')
'name'
extract_simple_field_name('"name"')
'name'
extract_simple_field_name('"na$me"') # Escaped characters are preserved
'na$me'
extract_simple_field_name('"na.me"') # Escaped characters are preserved
'na.me'
extract_simple_field_name('$.name') # Returns None
extract_simple_field_name('$.items[*].name') # Returns None
extract_simple_field_name('*') # Returns None