jmespath.py VS GJSON

Compare jmespath.py vs GJSON and see what are their differences.

jmespath.py

JMESPath is a query language for JSON. (by jmespath)

GJSON

Get JSON values quickly - JSON parser for Go (by tidwall)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
jmespath.py GJSON
30 34
2,065 13,589
1.6% -
0.0 5.2
about 1 month ago 8 days ago
Python Go
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

jmespath.py

Posts with mentions or reviews of jmespath.py. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-29.
  • Automating Nightly Local Database Refreshes from Azure Blob Storage with Docker
    3 projects | dev.to | 29 Feb 2024
    The Azure CLI lets us write queries to filter the results of the az storage blob list command. The queries are written in JMESPath, which is a query language for JSON. In this case, we are filtering the results to only include blobs that end with the .bacpac extension and then selecting the first one as ordered by the lastModified property. If there are no blobs found, the script exits with a failure code. If we find a blob, we download it to the local path specified by the localPath variable.
  • What's New in Python 3.12
    5 projects | news.ycombinator.com | 18 Oct 2023
    For JSON there is the `jmespath` library which might help.

    https://github.com/jmespath/jmespath.py

  • jq 1.7 Released
    33 projects | news.ycombinator.com | 6 Sep 2023
    I love jq, but I also use JMESPath (especially with AWS CLI), yq (bundled with tomlq and xq as well), and dasel [2]. I also wish hclq [3] wasn't so dead!

    [0]: https://jmespath.org/

  • Announcing serde-query 0.2.0
    5 projects | /r/rust | 25 Feb 2023
    Probably writing the query side of things is a lot of the fun here, but there is actually a spec (and a complying Rust impl) you can hook into for this JQ-like querying: https://jmespath.org/ ( https://github.com/jmespath/jmespath.rs ).
  • JMESPath
    1 project | news.ycombinator.com | 13 Jan 2023
  • Spring Boot logging with Loki, Promtail, and Grafana (Loki stack)
    5 projects | dev.to | 6 Jan 2023
    Thanks to custom variables that use labels, we can create various filters for the dashboard. You can look up my configuration of variables and extend it with an analogy way for your own needs. At the top, I marked the filter with detected pods in selected namespace. In the lower part, you can see a preview of all labels that are associated with a single log line. Most labels are meta information that Promtail adds during scraping targets. This part of the Promtail configuration provides it. In this section, I also marked a few labels that not comes out-of-the box e.g. leavel , class , thread . We added these labels using the Promtail json stage. You need to know that Promtail processes scraped logs in a pipeline. A pipeline is comprised of a set of stages. json stage is a parsing stage that reads the log line as JSON and accepts JMESPath expressions to extract data.
  • Who is JSON?
    1 project | /r/ProgrammerHumor | 3 Nov 2022
  • jmespath.py VS jertl - a user suggested alternative
    2 projects | 31 Oct 2022
  • YAML value retrieval
    1 project | /r/ansible | 25 Oct 2022
    The tester on the official website for JMESPath (what json_query is doing) has been useful to me: https://jmespath.org/
  • I've built a PathDict, a library that makes it easy to work with dicts!
    4 projects | /r/Python | 15 Oct 2022
    Interesting. How does this compared to Jmespath? Not saying Jmespath is superior, just wondering whether you were aware of it.

GJSON

Posts with mentions or reviews of GJSON. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-04.
  • Rob Pike: Gobs of data (2011)
    10 projects | news.ycombinator.com | 4 Dec 2023
    Someone made a benchmark of serialization libraries in go [1], and I was surprised to see gobs is one of the slowest ones, specially for decoding. I suspect part of the reason is that the API doesn't not allow reusing decoders [2]. From my explorations it seems like both JSON [3], message-pack [4] and CBOR [5] are better alternatives.

    By the way, in Go there are a like a million JSON encoders because a lot of things in the std library are not really coded for maximum performance but more for easy of usage, it seems. Perhaps this is the right balance for certain things (ex: the http library, see [6]).

    There are also a bunch of libraries that allow you to modify a JSON file "in place", without having to fully deserialize into structs (ex: GJSON/SJSON [7] [8]). This sounds very convenient and more efficient that fully de/serializing if we just need to change the data a little.

    --

    1: https://github.com/alecthomas/go_serialization_benchmarks

    2: https://github.com/golang/go/issues/29766#issuecomment-45492...

    --

    3: https://github.com/goccy/go-json

    4: https://github.com/vmihailenco/msgpack

    5: https://github.com/fxamacker/cbor

    --

    6: https://github.com/valyala/fasthttp#faq

    --

    7: https://github.com/tidwall/gjson

    8: https://github.com/tidwall/sjson

  • Jj: JSON Stream Editor
    7 projects | news.ycombinator.com | 25 May 2023
    ```

    I don't think there is a way to sort an array, though. However, there is an option to have keys sorted. Personally, I don't think there is much annoyance in that. One could just pipe `jj` output to `sort | uniq -c`.

    [0]: https://github.com/tidwall/gjson/blob/master/SYNTAX.md

  • Library to analyze an arbitrary JSON string
    5 projects | /r/golang | 1 May 2023
    I’m using GJSON, so far so good!
  • Mapping json fields in api calls to a struct to store them in a database or cache
    1 project | /r/golang | 28 Mar 2023
    If the fields you need are just a small subset of the whole json, maybe https://github.com/tidwall/gjson might be of use to read only those (using jsonpath) without needing to create complete corresponding structs.
  • Which CPU to buy based on profiling
    1 project | /r/golang | 27 Mar 2023
    Thank you for the reminder, it's never too much of it :) Didn't say it, but the code was pprof-iled many times and i can really say it's well optimized. I use own libraries with on-the-fly equations (sums, avgs, emas, stds, ...) wherever possible and also made custom json parser as json messages are in fixed format, so the parser is about 10x faster than gjson. I optimized it to the point that I avoided using maps, and rather iterate via slice where ever possible.
  • Jetro - transform and query JSON format
    1 project | /r/rust | 19 Mar 2023
    You are right, for learning purposes this fit my needs, but I can imagine an approach similar to this repo: https://github.com/tidwall/gjson
  • Any way to convert unknown/dynamic json to generic object structure
    3 projects | /r/golang | 2 Mar 2023
    https://github.com/tidwall/gjson is a relatively sensible library if this is something you need to deal with and the structure is actually unknowable.
  • Need help with getting the grandchild in nested JSON
    3 projects | /r/golang | 28 Feb 2023
  • Double down on python or learn Go
    3 projects | /r/golang | 19 Feb 2023
  • Ad hoc JSON parsing
    4 projects | /r/golang | 16 Jan 2023

What are some alternatives?

When comparing jmespath.py and GJSON you can also consider the following projects:

jq - Command-line JSON processor [Moved to: https://github.com/jqlang/jq]

jsoniter - A high-performance 100% compatible drop-in replacement of "encoding/json"

jq - Command-line JSON processor

go-json - Fast JSON encoder/decoder compatible with encoding/json for Go

yq - yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor

intrinsic

jfq - JSONata on the command line

gojson - Automatically generate Go (golang) struct definitions from example JSON

jello - CLI tool to filter JSON and JSON Lines data with Python syntax. (Similar to jq)

hub - A command-line tool that makes git easier to use with GitHub.

yq - Command-line YAML, XML, TOML processor - jq wrapper for YAML/XML/TOML documents

ngrok - Unified ingress for developers