周玉环 d906a41c2e first commit hai 2 días
..
.gitignore d906a41c2e first commit hai 2 días
LICENSE d906a41c2e first commit hai 2 días
README.md d906a41c2e first commit hai 2 días
converter.go d906a41c2e first commit hai 2 días
decoder.go d906a41c2e first commit hai 2 días
doc.go d906a41c2e first commit hai 2 días
encoder.go d906a41c2e first commit hai 2 días
jstype.go d906a41c2e first commit hai 2 días
plugins.go d906a41c2e first commit hai 2 días
struct.go d906a41c2e first commit hai 2 días

README.md

goxml2json CircleCI

Go package that converts XML to JSON

Install

go get -u github.com/basgys/goxml2json

Importing

import github.com/basgys/goxml2json

Usage

Code example

  package main

  import (
  	"fmt"
  	"strings"

  	xj "github.com/basgys/goxml2json"
  )

  func main() {
  	// xml is an io.Reader
  	xml := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?><hello>world</hello>`)
  	json, err := xj.Convert(xml)
  	if err != nil {
  		panic("That's embarrassing...")
  	}

  	fmt.Println(json.String())
  	// {"hello": "world"}
  }

Input

  <?xml version="1.0" encoding="UTF-8"?>
  <osm version="0.6" generator="CGImap 0.0.2">
   <bounds minlat="54.0889580" minlon="12.2487570" maxlat="54.0913900" maxlon="12.2524800"/>
   <foo>bar</foo>
  </osm>

Output

  {
    "osm": {
      "-version": 0.6,
      "-generator": "CGImap 0.0.2",
      "bounds": {
        "-minlat": "54.0889580",
        "-minlon": "12.2487570",
        "-maxlat": "54.0913900",
        "-maxlon": "12.2524800"
      },
      "foo": "bar"
    }
  }

With type conversion

  package main

  import (
  	"fmt"
  	"strings"

  	xj "github.com/basgys/goxml2json"
  )

  func main() {
  	// xml is an io.Reader
  	xml := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?><price>19.95</price>`)
  	json, err := xj.Convert(xml, xj.WithTypeConverter(xj.Float))
  	if err != nil {
  		panic("That's embarrassing...")
  	}

  	fmt.Println(json.String())
  	// {"price": 19.95}
  }

Contributing

Feel free to contribute to this project if you want to fix/extend/improve it.

Contributors

TODO

  • Categorise errors
  • Option to prettify the JSON output
  • Benchmark