1
0
mirror of https://github.com/json-iterator/go.git synced 2024-11-27 08:30:57 +02:00
A high-performance 100% compatible drop-in replacement of "encoding/json" http://jsoniter.com/migrate-from-go-std.html
Go to file
2018-02-28 20:29:23 +08:00
any_tests gofmt 2018-02-24 22:04:41 +08:00
api_tests gofmt 2018-02-24 22:04:41 +08:00
benchmarks gofmt 2018-02-24 22:04:41 +08:00
extension_tests move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
extra move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
misc_tests gofmt 2018-02-24 22:04:41 +08:00
skip_tests gofmt 2018-02-24 22:04:41 +08:00
type_tests gofmt 2018-02-24 22:04:41 +08:00
value_tests move reflect2 from plz to modern-go 2018-02-28 17:09:30 +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 detect remaining bytes 2018-02-22 10:37:32 +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 move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
build.sh fix #198, use dep for vendoring 2017-11-30 10:42:24 +08:00
config.go fix build on 1.8 2018-02-28 20:29:23 +08:00
example_test.go gofmt 2018-02-24 22:04:41 +08:00
fuzzy_mode_convert_table.md update conversion table 2017-07-13 00:13:04 +08:00
Gopkg.lock move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
Gopkg.toml move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
iter_array.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_float.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_int.go fix #241, support 32bit platform 2018-02-23 08:12:45 +08:00
iter_object.go remove feature prefix 2018-02-19 23:04:25 +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 remove feature prefix 2018-02-19 23:04:25 +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 Initial commit 2016-11-30 08:30:24 +08:00
pool.go use sync.Pool 2018-02-22 10:29:29 +08:00
README.md Update README.md 2018-01-28 22:27: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 move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08: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 move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_marshaler.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_native.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +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 move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect_struct_encoder.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +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

Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com

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

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