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-05-26 09:43:29 +08:00
any_tests gofmt 2018-02-24 22:04:41 +08:00
api_tests fix #261 should load from reader 2018-04-18 16:11:14 +08:00
benchmarks gofmt 2018-02-24 22:04:41 +08:00
extension_tests suport encode map[interface{}]interface{} 2018-03-15 21:28:16 +08:00
extra fix #263, support empty string as 0 in fuzz mode 2018-04-18 16:34:54 +08:00
misc_tests fix base64 contains newline characters \r or \n 2018-04-23 23:10:55 +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 fix #274, unescape before base64 decode 2018-05-26 09:38:52 +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 #264 check io.EOF when test decoder.More 2018-04-20 16:10:56 +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 suport encode map[interface{}]interface{} 2018-03-15 21:28:16 +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 Release writer to enable GC 2018-04-07 21:40:08 +10:00
README.md always benchmark yourself 2018-04-03 13:41:01 +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 suport encode map[interface{}]interface{} 2018-03-15 21:28:16 +08:00
reflect_marshaler.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +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 Check that a struct ends with closing brace 2018-04-01 22:02:44 +00: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

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