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
2018-08-06 14:07:27 +08:00
any_tests gofmt 2018-02-24 22:04:41 +08:00
api_tests merge 2018-07-01 13:06:34 +08:00
benchmarks gofmt 2018-02-24 22:04:41 +08:00
extension_tests fix #295 decoder more was not compatible with standard library 2018-08-06 14:07:27 +08:00
extra fix #276 allow rename when set naming strategy 2018-07-01 15:16:28 +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 fix #286 calcHash should use byte not rune to calc hash 2018-08-06 13:23:06 +08:00
value_tests fix #291 omit empty was not handled properly for json raw message 2018-08-06 13:58:33 +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 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 #291 omit empty was not handled properly for json raw message 2018-08-06 13:58:33 +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 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 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 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 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 fix #293 copy extensions 2018-07-22 11:51:51 +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 fix #293 copy extensions 2018-07-22 11:51:51 +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 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

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