1
0
mirror of https://github.com/json-iterator/go.git synced 2025-04-20 11:28:49 +02:00
Sai To Yeung 8961be9c21
Map keys of custom types should serialize using MarshalText when available (#461)
* Map keys of custom types should serialize/deserialize using MarshalText/UnmarshalText when available

- this brings marshaling/unmarshaling behavior in line with encoding/json
- in general, any types that implement the interfaces from the encoding package (TextUnmarshaler, TextMarshaler, etc.) should use the provided method when available
2020-05-08 10:21:59 +08:00
2020-03-26 14:46:47 +08:00
2020-01-16 17:17:18 +08:00
2017-11-30 10:42:24 +08:00
2017-09-07 17:12:42 +02:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2020-03-26 18:17:29 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-10-24 21:05:37 +08:00
2017-11-30 10:42:24 +08:00
2020-01-14 14:14:02 +08:00
2019-01-10 17:51:25 +01:00
2019-04-25 17:40:48 -03:00
2019-04-25 17:40:48 -03:00
2018-07-01 13:05:25 +08:00
2018-07-01 13:05:25 +08:00
2019-10-08 11:17:01 -04:00
2019-01-10 18:00:15 +01:00
2018-02-23 08:12:45 +08:00
2018-02-19 23:04:25 +08:00
2019-10-08 11:17:01 -04:00
2018-02-19 23:04:25 +08:00
2017-07-09 16:09:23 +08:00
2016-11-30 08:30:24 +08:00
2018-04-07 21:40:08 +10:00
2019-03-06 22:29:09 +08:00
2020-03-26 14:46:47 +08:00
2020-01-15 20:21:20 +08:00
2019-10-08 11:17:01 -04:00
2018-02-24 22:04:41 +08:00
2018-02-19 23:04:25 +08:00
2018-02-14 14:06:32 +08:00

Sourcegraph GoDoc Build Status codecov rcard License Gitter chat

A high-performance 100% compatible drop-in replacement of "encoding/json"

You can also use thrift like JSON using thrift-iterator

Benchmark

benchmark

Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go

Raw Result (easyjson requires static code generation)

ns/op allocation bytes allocation times
std decode 35510 ns/op 1960 B/op 99 allocs/op
easyjson decode 8499 ns/op 160 B/op 4 allocs/op
jsoniter decode 5623 ns/op 160 B/op 3 allocs/op
std encode 2213 ns/op 712 B/op 5 allocs/op
easyjson encode 883 ns/op 576 B/op 3 allocs/op
jsoniter encode 837 ns/op 384 B/op 4 allocs/op

Always benchmark with your own workload. The result depends heavily on the data input.

Usage

100% compatibility with standard lib

Replace

import "encoding/json"
json.Marshal(&data)

with

import "github.com/json-iterator/go"

var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Marshal(&data)

Replace

import "encoding/json"
json.Unmarshal(input, &data)

with

import "github.com/json-iterator/go"

var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Unmarshal(input, &data)

More documentation

How to get

go get github.com/json-iterator/go

Contribution Welcomed !

Contributors

Report issue or pull request, or email taowen@gmail.com, or Gitter chat

Description
Languages
Go 99.9%
Shell 0.1%