Add json helper function json_replace

Function can replace content for a json path string in a dictionary
This commit is contained in:
Clemens Schwaighofer
2025-10-23 13:20:40 +09:00
parent e579ef5834
commit 2544fad9ce
6 changed files with 821 additions and 0 deletions

View File

@@ -5,6 +5,8 @@ json encoder for datetime
from typing import Any
from json import JSONEncoder, dumps
from datetime import datetime, date
import copy
from jsonpath_ng import parse # pyright: ignore[reportMissingTypeStubs, reportUnknownVariableType]
# subclass JSONEncoder
@@ -41,4 +43,22 @@ def json_dumps(data: Any):
"""
return dumps(data, ensure_ascii=False, default=str)
def modify_with_jsonpath(data: dict[Any, Any], path: str, new_value: Any):
"""
Modify dictionary using JSONPath (more powerful than JMESPath for modifications)
"""
result = copy.deepcopy(data)
jsonpath_expr = parse(path) # pyright: ignore[reportUnknownVariableType]
# Find and update all matches
matches = jsonpath_expr.find(result) # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
for match in matches: # pyright: ignore[reportUnknownVariableType]
match.full_path.update(result, new_value) # pyright: ignore[reportUnknownMemberType]
return result
# __END__
# __END__