json-key-parser vs jsonpath-ng: Simplicity Wins for Messy JSON, Power for Complex Queries

Published: (March 4, 2026 at 01:16 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Cover image for json-key-parser vs jsonpath-ng: Simplicity Wins for Messy JSON, Power for Complex Queries

Philosophy & API

Aspectjson-key-parserjsonpath-ng
Core idea“Just give me these keys, wherever they are”“Write a precise path query like XPath for JSON”
SyntaxSimple list of strings + * wildcardFull JSONPath expressions ($..key, [*], ?(@.price>10))
Learning curve~30 seconds15–30 minutes (docs required)
Typical line count1–2 lines3–10+ lines (parse + find + process)

json-key-parser example (one‑liner):

from json_parser import JsonParser

result = JsonParser(data, ["first_name", "street", "address*"]).get_data()

It recursively hunts every level, handles lists, and merges duplicate keys into lists automatically.

jsonpath-ng equivalent (multiple expressions):

from jsonpath_ng import parse

first_names = parse('$..first_name').find(data)
streets = parse('$..street').find(data)
addresses = parse('$..address*').find(data)  # * works but not exactly the same

You then need to extract .value from the Match objects and handle merging yourself.

Winner for quick‑and‑dirty extraction: json-key-parser.

Power & Features

json-key-parser shines when:

  • JSON structure is unpredictable or changes often (third‑party APIs, logs, scraped data)
  • You just want a flat dict/list of the fields you care about
  • Duplicate keys appear at different nesting levels (it merges them intelligently)
  • You want to avoid defensive data.get("a", {}).get("b", []) chains

jsonpath-ng dominates when:

  • You need filters, e.g. $.books[?(@.price > 20)]
  • You want to update or delete values in place (expr.update(data, new_value))
  • You need arithmetic, regex, slicing, or parent references
  • You’re doing metaprogramming (it exposes a clean AST)
  • You want full paths back (match.full_path)
  • You require extensions such as len(), keys(), sorting, etc.

Dependencies & Size

  • json-key-parser: pure standard library, < 50 KB installed, zero external dependencies.
  • jsonpath-ng: also zero external dependencies in recent versions (no runtime ply), still tiny.

Both install with a single pip command and support Python 3.8+.

Performance & Maturity

  • jsonpath-ng is mature, heavily tested, and used in production at scale.
  • json-key-parser is brand‑new (Beta) but laser‑focused; its recursion is extremely fast for the majority of use cases.

For massive JSON documents with thousands of nested objects, compiled jsonpath‑ng expressions can edge out on complex queries. For simple key extraction, json-key-parser is often faster because it avoids parsing a query language.

When to Choose Which

Use json-key-parser if you:

  • Write ETL scripts, API clients, or data‑cleaning notebooks
  • Have messy JSON and just need “first_name, email, total” regardless of nesting
  • Value readability and minimal code

Use jsonpath-ng if you:

  • Need conditional filtering or data transformation
  • Build a library or tool that requires precise, repeatable queries
  • Want to modify the JSON structure in place

Pro tip: You can even use both in the same project—parse complex parts with jsonpath‑ng, then hand the result to json-key-parser for final flattening.

Bottom Line

If jsonpath‑ng is the Swiss Army knife of JSON querying, json-key-parser is the precision scalpel for the single most common pain point: “I just need these damn keys.”

For ~80 % of real‑world Python scripts dealing with APIs and configs, json-key-parser will save you more time and frustration than any other library released this year.

Install json-key-parser

pip install json-key-parser

Give both libraries a spin with the same data and see which one cuts your boilerplate faster.

What’s your biggest JSON‑parsing headache right now? Drop it in the comments — I’ll show you which tool slays it faster.

0 views
Back to Blog

Related posts

Read more »

No right to relicense this project

Hi, I'm Mark Pilgrim. You may remember me from such classics as Dive Into Python and Universal Character Encoding Detector. I am the original author of chardet....

Relicensing with AI-Assisted Rewrite

Disclaimer I am not a lawyer, nor am I an expert in copyright law or software licensing. The following post is a breakdown of recent community events and legal...