Pokud píšete nějaká to REST API, pak konzumujete, nebo i exportujete nějaká data. Nejpopulárnějším datovým formátem pak je JSON.
Go pak pro práci s JSON dokumenty nabízí vlastní, interní package json.
Pokud je pro vás performance alfou a omegou, mohla by se vám líbit knihovna Jingo, ktará nabízí několikanásobně vešší výkon, než defaultní Go knihovna.
| Lib | Iter | ns/op | B/op | allocs/op | +/- |
|---|---|---|---|---|---|
| jingo | 10000000 | 208 | 0 | 0 | 4.8x |
| stdlib encoding/json | 1000000 | 1008 | 160 | 1 | 1x |
| gojay | 2000000 | 605 | 512 | 1 | 1.6x |
| json-iterator | 2000000 | 825 | 168 | 2 | 1.2x |
import "github.com/bet365/jingo"
// we tag the structs using the same annotations
type MyPayload struct {
Name string `json:"name"`
Age int `json:"age"`
ID int // anything we don't annotate doesn't get emitted.
}
// Create an encoder, once, letting it know which type of struct we're going to be encoding.
var enc = jingo.NewStructEncoder(MyPayload{})
func main() {
p := MyPayload{
Name: "Mr Payload",
Age: 33,
}
// pull a buffer from the pool and pass it along with the struct to Marshal
buf := jingo.NewBufferFromPool()
enc.Marshal(&p, buf) // buf = {"name":"Mr Payload","age":33}
}