1
0
mirror of https://github.com/json-iterator/go.git synced 2024-11-24 08:22:14 +02:00
A high-performance 100% compatible drop-in replacement of "encoding/json" http://jsoniter.com/migrate-from-go-std.html
Go to file
Tao Wen 1bc9828b4f
Merge pull request #361 from lggomez/master
Add go module definition
2019-05-19 23:23:02 +08:00
any_tests fix #313 support json marshaller type as map key 2018-10-24 23:28:41 +08:00
api_tests Merge pull request #316 from proemergotech/master 2019-02-08 15:56:42 +08:00
benchmarks gofmt 2018-02-24 22:04:41 +08:00
extension_tests fix #313 support json marshaller type as map key 2018-10-24 23:28:41 +08:00
extra simplify x = x <op> y to x <op>= y 2018-09-13 21:48:13 +03:00
misc_tests remove redundant dereferencing expressions 2018-09-13 21:51:59 +03:00
skip_tests fix #313 support json marshaller type as map key 2018-10-24 23:28:41 +08:00
type_tests fix #286 calcHash should use byte not rune to calc hash 2018-08-06 13:23:06 +08:00
value_tests fix #317, try parse as BigFloat if overflow 2018-11-12 14:45:56 +08:00
.codecov.yml import github.com/stretchr/testify/require 2017-07-07 09:13:25 +08:00
.gitignore fix #198, use dep for vendoring 2017-11-30 10:42:24 +08:00
.travis.yml travis: add 1.x to go versions 2017-09-07 17:12:42 +02:00
adapter.go fix #295 decoder more was not compatible with standard library 2018-08-06 14:07:27 +08:00
any_array.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_bool.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_float.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_int32.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_int64.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_invalid.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_nil.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_number.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_object.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_str.go rename 2018-02-19 23:08:01 +08:00
any_uint32.go remove feature prefix 2018-02-19 23:04:25 +08:00
any_uint64.go remove feature prefix 2018-02-19 23:04:25 +08:00
any.go fix #311 handle nil any 2018-10-24 21:05:37 +08:00
build.sh fix #198, use dep for vendoring 2017-11-30 10:42:24 +08:00
config.go fix #291 omit empty was not handled properly for json raw message 2018-08-06 13:58:33 +08:00
example_test.go rename ExampleMyKey 2019-01-10 17:51:25 +01:00
fuzzy_mode_convert_table.md update conversion table 2017-07-13 00:13:04 +08:00
go.mod Add go module definition 2019-04-25 17:40:48 -03:00
go.sum Add go module definition 2019-04-25 17:40:48 -03:00
Gopkg.lock add tests for #283 2018-07-01 13:05:25 +08:00
Gopkg.toml add tests for #283 2018-07-01 13:05:25 +08:00
iter_array.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_float.go clean readPositiveFloat64 2019-01-10 18:00:15 +01:00
iter_int.go fix #241, support 32bit platform 2018-02-23 08:12:45 +08:00
iter_object.go fix #286 calcHash should use byte not rune to calc hash 2018-08-06 13:23:06 +08:00
iter_skip_sloppy_test.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_skip_sloppy.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_skip_strict.go fix #317, try parse as BigFloat if overflow 2018-11-12 14:45:56 +08:00
iter_skip.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_str.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter.go remove feature prefix 2018-02-19 23:04:25 +08:00
jsoniter.go document public symbols 2017-07-09 16:09:23 +08:00
LICENSE
pool.go Release writer to enable GC 2018-04-07 21:40:08 +10:00
README.md update README 2019-03-06 22:29:09 +08:00
reflect_array.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_dynamic.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_extension.go fix #308 do NOT skip embedded structs without tag when OnlyTaggedField is set to true 2018-10-29 12:00:51 +01:00
reflect_json_number.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_json_raw_message.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_map.go fix #313 support json marshaller type as map key 2018-10-24 23:28:41 +08:00
reflect_marshaler.go Fix the incompatible encoding 2019-01-03 18:19:22 +08:00
reflect_native.go \n should not be ignored in base64 decode 2018-05-26 09:43:29 +08:00
reflect_optional.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_slice.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_struct_decoder.go Fix case sensitivity for nested fields 2018-06-12 11:27:24 +05:30
reflect_struct_encoder.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect.go fix #293 copy extensions 2018-07-22 11:51:51 +08:00
stream_float.go remove feature prefix 2018-02-19 23:04:25 +08:00
stream_int.go gofmt 2018-02-24 22:04:41 +08:00
stream_str.go remove feature prefix 2018-02-19 23:04:25 +08:00
stream_test.go remove feature prefix 2018-02-19 23:04:25 +08:00
stream.go fix #244 use BinaryAsStringExtension to make []byte pretty, while the output is valid json, but it can not be decoded by other json codec, as \x01 is decoded as \x01 by them, which is not original input 2018-02-27 12:40:48 +08:00
test.sh fix coverage 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