mxj
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
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"
}