[Python] $..[?(@.name=='is_literate')] expression works completely fine on...

Discussão em 'Python' iniciado por Stack, Agosto 24, 2025.

  1. Stack

    Stack Membro Participativo

    I am facing an issue with phasing data using jsonpath-ng. My expression looks like $..[?(@.name=='is_literate')]. I tried it at https://jsonpath.com/, it works fine with $..[?(@.name=='is_literate')] expression, but when I tried the given expression with jsonpath-ng, it throws an error.

    My Python Code looks like following:


    from jsonpath_ng.ext import parse
    exp = "$..[?(@.name=='is_literate')]"
    filter_query = parse(exp)
    filtered_data = [match.value for match in filter_query.find(label_data)]
    print(filtered_data)

    The Error Looks Like


    ---------------------------------------------------------------------------
    JsonPathParserError Traceback (most recent call last)
    Cell In[31], line 3
    1 from jsonpath_ng.ext import parse
    2 exp = "$..[?(@.name=='is_literate')]"
    ----> 3 filter_query = parse(exp)
    4 filtered_data = [match.value for match in filter_query.find(label_data)]
    5 print(filtered_data)

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/jsonpath_ng/ext/parser.py:176, in parse(path, debug)
    175 def parse(path, debug=False):
    --> 176 return ExtentedJsonPathParser(debug=debug).parse(path)

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/jsonpath_ng/parser.py:58, in JsonPathParser.parse(self, string, lexer)
    56 def parse(self, string, lexer = None):
    57 lexer = lexer or self.lexer_class()
    ---> 58 return self.parse_token_stream(lexer.tokenize(string))

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/jsonpath_ng/parser.py:61, in JsonPathParser.parse_token_stream(self, token_iterator)
    60 def parse_token_stream(self, token_iterator):
    ---> 61 return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/ply/yacc.py:333, in LRParser.parse(self, input, lexer, debug, tracking, tokenfunc)
    331 return self.parseopt(input, lexer, debug, tracking, tokenfunc)
    332 else:
    --> 333 return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/ply/yacc.py:1201, in LRParser.parseopt_notrack(self, input, lexer, debug, tracking, tokenfunc)
    1199 errtoken.lexer = lexer
    1200 self.state = state
    -> 1201 tok = call_errorfunc(self.errorfunc, errtoken, self)
    1202 if self.errorok:
    1203 # User must have done some kind of panic
    1204 # mode recovery on their own. The
    1205 # returned token is the next lookahead
    1206 lookahead = tok

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/ply/yacc.py:192, in call_errorfunc(errorfunc, token, parser)
    190 _token = parser.token
    191 _restart = parser.restart
    --> 192 r = errorfunc(token)
    193 try:
    194 del _errok, _token, _restart

    File ~/Desktop/mstech/Digital_Profile/data_haneling/venv/lib/python3.12/site-packages/jsonpath_ng/parser.py:78, in JsonPathParser.p_error(self, t)
    76 if t is None:
    77 raise JsonPathParserError('Parse error near the end of string!')
    ---> 78 raise JsonPathParserError('Parse error at %s:%s near token %s (%s)'
    79 % (t.lineno, t.col, t.value, t.type))

    JsonPathParserError: Parse error at 1:4 near token ? (?)

    I want following output while using $..[?(@.name=='is_literate')]


    [
    {
    "control": {
    "appearance": "quick"
    },
    "children": [
    {
    "name": "is_literate_1",
    "label": "साक्षर"
    },
    {
    "name": "is_literate_0",
    "label": "निरक्षर"
    }
    ],
    "name": "is_literate",
    "label": "${full_name}: साक्षर कि निरक्षर ?",
    "bind": {
    "required": "true"
    },
    "type": "select one"
    }
    ]

    Note: I have the name of the label, but I don't have label. I need the label based on the name value.

    I am attaching the JSON file for reference. I would appreciate it if someone could resolve this issue. Thank You.


    JSON File URL: https://github.com/user-attachments/files/21955956/form_label_output.json

    Continue reading...

Compartilhe esta Página