Skip to content

jmespathvsmxj

MIT 63 3 2,424
507.7 million (month) Feb 09 2022 1.1.0(2026-01-22 16:35:24 ago)
633 2 2 MIT
Feb 09 2017 58.1 thousand (month) per(2023-07-24 15:10:09 ago)

JMESPath (pronounced “james path”) allows you to declaratively specify how to extract elements from a JSON document.

In web scraping, jmespath is a powerful tool for parsing and reshaping large JSON datasets. Jmespath is fast and easily extendible following it's own powerful query language.

For more see the Json parsing introduction section.

mxj is a Go library for working with JSON and XML data. It allows you to convert between JSON and XML, merge JSON and XML documents, and extract values from JSON and XML using a simple and intuitive API.

One of the main features of mxj is its ability to work with JSON and XML data in a struct-like manner, allowing you to access values using dot notation.

Example Use


```python import jmespath data = { "data": { "info": { "products": [ {"price": {"usd": 1}, "_type": "product", "id": "123"}, {"price": {"usd": 2}, "_type": "product", "id": "345"} ] } } } # easily reshape nested dataset to flat structure: jmespath.search("data.info.products[*].{id:id, price:price.usd}", data) [{'id': '123', 'price': 1}, {'id': '345', 'price': 2}] ```
```go package main import ( "fmt" "github.com/clbanning/mxj" ) func main() { // Parse the JSON string jsonData := []byte(` { "name": "John Doe", "age": 30, "address": { "street": "Main St", "city": "Anytown", "state": "CA", "zip": "12345" }, "phones": [ "555-555-5555", "555-555-5556" ] } `) mv, err := mxj.NewMapJson(jsonData) if err != nil { fmt.Println("Error:", err) return } // Extract the name name, _ := mv.ValueForPath("name") fmt.Println("name:", name) // "John Doe" // Extract the city city, _ := mv.ValueForPath("address.city") fmt.Println("city:", city) // "Anytown" // Extract all phone numbers phones, _ := mv.ValuesForPath("phones") for _, phone := range phones { fmt.Println("phone:", phone) } // "555-555-5555" // "555-555-5556" } ```

Alternatives / Similar


Was this page helpful?