IMHO nothing beats jq[1]. There's Pyjq[2] for Python.
[1] https://stedolan.github.io/jq/ [2] https://github.com/doloopwhile/pyjq
[1] https://stedolan.github.io/jq/ [2] https://github.com/doloopwhile/pyjq
However, I think this may be indicative of the task you are trying to complete rather than the tool itself. At a certain level of complexity your resulting code will just look bad regardless of which language you use. One thing jq does to make this easier is providing the pipe operator, so you can break a complex task into stages: A | B | (C .... | C.5) | D | E...
It is more verbose for simple queries, but with named variables and functions, larger queries do not become complicated
I still prefer jq for JSON processing though. I'm hooked to pipelines. EDIT: The great power of jq is in transforming documents, not querying.