Skip to content

find_or_create doesn't create if any field in the path is null #218

@shreyanshsaha

Description

@shreyanshsaha

Request: I would like find_or_create to create the child paths if any of the fields in the path is null

Consider this code snippet

from jsonpath_ng.ext import parse

data = {"folder": {"document": None}}
expr = parse('$.folder.document.doc_a.value')

print(expr.find_or_create(data))
print(f"After find_or_create: {data}")

Current Output

[]
After find_or_create: {'folder': {'document': None}}

Expected Output

[DatumInContext(value={}, path=Fields('value'), context=DatumInContext(value={'value': {}}, path=Fields('doc_a'), context=DatumInContext(value={'doc_a': {'value': {}}}, path=Fields('document'), context=DatumInContext(value={'document': {'doc_a': {'value': {}}}}, path=Fields('folder'), context=DatumInContext(value={'folder': {'document': {'doc_a': {'value': {}}}}}, path=Root(), context=None)))))]
After find_or_create: {'folder': {'document': {'doc_a': {'value': {}}}}}

i.e., find_or_create creates doc_a for None docuement field

It seems to be an intentional behavior. Please let me know if i missed anything here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions