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