1
0
mirror of https://github.com/json-iterator/go.git synced 2024-11-30 08:36:43 +02:00
A high-performance 100% compatible drop-in replacement of "encoding/json" http://jsoniter.com/migrate-from-go-std.html
Go to file
Jens Erat a1c9557592
pass nested error in compatible configuration
When invalid types inside a map were marshalled (in general, as soon as
sorted maps have been configured), the error message has not been
propagated out of the map's `subStream`.

Also fix and re-enable the channel test, which now resembles the
behavior of `encoding/json` and tests both default and compatible
configurations.

Signed-off-by: Jens Erat <email@jenserat.de>
2019-11-22 16:56:59 +01:00
any_tests fix #313 support json marshaller type as map key 2018-10-24 23:28:41 +08:00
api_tests Remove large test values that fail on 32-bit architectures 2019-11-11 16:35:50 +00: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 Limit nesting depth 2019-10-08 11:17:01 -04:00
skip_tests fix #37: add SkipAndAppendBytes iterator method 2019-06-10 12:40:05 +03:00
type_tests Unnamed struct literals 2019-10-28 23:05:10 -07:00
value_tests pass nested error in compatible configuration 2019-11-22 16:56:59 +01: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 typo in UnmarshalFromString documentation 2019-05-21 12:48:31 +01: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 Adds MaxDepth config option 2019-11-11 16:13:59 +00: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 Limit nesting depth 2019-10-08 11:17:01 -04: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 Limit nesting depth 2019-10-08 11:17:01 -04:00
iter_skip_sloppy_test.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter_skip_sloppy.go Limit nesting depth 2019-10-08 11:17:01 -04:00
iter_skip_strict.go fix #317, try parse as BigFloat if overflow 2018-11-12 14:45:56 +08:00
iter_skip.go fix #37: add SkipAndAppendBytes iterator method 2019-06-10 12:40:05 +03:00
iter_str.go remove feature prefix 2018-02-19 23:04:25 +08:00
iter.go Adds MaxDepth config option 2019-11-11 16:13:59 +00: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 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 Unnamed struct literals 2019-10-28 23:05:10 -07: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 pass nested error in compatible configuration 2019-11-22 16:56:59 +01:00
reflect_marshaler.go use json.Marshaler then trim the last '\n' in reflect_marshaler 2019-08-14 10:10:02 +08:00
reflect_native.go Don't marshal empty byte or uint8 slice as null 2019-06-03 16:19:17 +05:30
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 Limit nesting depth 2019-10-08 11:17:01 -04:00
reflect_struct_encoder.go move reflect2 from plz to modern-go 2018-02-28 17:09:30 +08:00
reflect.go Limit nesting depth 2019-10-08 11:17:01 -04:00
stream_float.go fix #365, return error for +inf -inf and NaN 2019-05-23 13:57:43 +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