Keine Beschreibung

Tao Wen 28452fcdec cow cache is not same, as map read will modify the underlying map. use sync.Map for 1.9 and above, and mutex if sync.Map not available vor 7 Jahren
extra b134d86290 optimize code vor 8 Jahren
output_tests 7df5a67d0d Add tests for int64 vor 8 Jahren
skip_tests be6688fc1a fix #200, do not use symbolic link in the code vor 8 Jahren
.codecov.yml b74ffb2e03 import github.com/stretchr/testify/require vor 8 Jahren
.gitignore 051434fab7 fix #198, use dep for vendoring vor 8 Jahren
.travis.yml f29a0391bc travis: add 1.x to go versions vor 8 Jahren
Gopkg.lock 051434fab7 fix #198, use dep for vendoring vor 8 Jahren
Gopkg.toml 051434fab7 fix #198, use dep for vendoring vor 8 Jahren
LICENSE 923358c07e Initial commit vor 9 Jahren
README.md abe3c4016b fix #179 vor 8 Jahren
build.sh 051434fab7 fix #198, use dep for vendoring vor 8 Jahren
compatible_test.go 640251ab91 Fix standard compatiblility vor 8 Jahren
example_test.go 9ecb1fd36d fix go vet vor 8 Jahren
feature_adapter.go 96fcb84835 fix #215 lazy load more vor 8 Jahren
feature_any.go b1b003864e expose OptionalEncoder&OptionalDecoder; add attachment to Stream&Iterator for customized decoder/encoder vor 8 Jahren
feature_any_array.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_bool.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_float.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_int32.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_int64.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_invalid.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_nil.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_number.go ea8c33040f fix #228 vor 7 Jahren
feature_any_object.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_string.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_uint32.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_any_uint64.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
feature_config.go 28452fcdec cow cache is not same, as map read will modify the underlying map. use sync.Map for 1.9 and above, and mutex if sync.Map not available vor 7 Jahren
feature_config_with_sync_map.go 28452fcdec cow cache is not same, as map read will modify the underlying map. use sync.Map for 1.9 and above, and mutex if sync.Map not available vor 7 Jahren
feature_config_without_sync_map.go 28452fcdec cow cache is not same, as map read will modify the underlying map. use sync.Map for 1.9 and above, and mutex if sync.Map not available vor 7 Jahren
feature_iter.go 9f088cbcc4 fix #195 when decode float as int, report it clearly vor 8 Jahren
feature_iter_array.go 6240e1e798 #185 add jsoniter.Valid vor 8 Jahren
feature_iter_float.go 25f147f530 add ReadNumber for Iterator. vor 8 Jahren
feature_iter_int.go 13f86432b8 do not use defer() in read int vor 8 Jahren
feature_iter_object.go f1258b01aa fix #191 do not always assume the object field is simple string vor 8 Jahren
feature_iter_skip.go 6240e1e798 #185 add jsoniter.Valid vor 8 Jahren
feature_iter_skip_sloppy.go 7e3b776024 change jsoniter-sloppy to jsoniter_sloppy vor 8 Jahren
feature_iter_skip_strict.go 7e3b776024 change jsoniter-sloppy to jsoniter_sloppy vor 8 Jahren
feature_iter_string.go 6240e1e798 #185 add jsoniter.Valid vor 8 Jahren
feature_json_number.go 73c7bc881e fix #180, add missing methods to jsoniter.Number vor 8 Jahren
feature_pool.go b1b003864e expose OptionalEncoder&OptionalDecoder; add attachment to Stream&Iterator for customized decoder/encoder vor 8 Jahren
feature_reflect.go a9b9c73b4d fix #207 delay unsupported type error reporting vor 8 Jahren
feature_reflect_array.go 807e4a8b20 Optimize 0-length array case vor 7 Jahren
feature_reflect_extension.go c27f6f9350 config: add OnlyTaggedField config, only process tagged fields in struct vor 8 Jahren
feature_reflect_map.go 945d1aaa19 fix #140 uintptr will no lock the address from gc vor 7 Jahren
feature_reflect_native.go c39a632e65 fix #227, fix empty json.Number vor 7 Jahren
feature_reflect_object.go a9b9c73b4d fix #207 delay unsupported type error reporting vor 8 Jahren
feature_reflect_optional.go 0ab880662f fix #219 should check real value for empty instead of just the pointer for nested field vor 8 Jahren
feature_reflect_slice.go 945d1aaa19 fix #140 uintptr will no lock the address from gc vor 7 Jahren
feature_reflect_struct_decoder.go a9b9c73b4d fix #207 delay unsupported type error reporting vor 8 Jahren
feature_stream.go b1b003864e expose OptionalEncoder&OptionalDecoder; add attachment to Stream&Iterator for customized decoder/encoder vor 8 Jahren
feature_stream_float.go bede1d7f40 fix build; add document for exported symbols vor 8 Jahren
feature_stream_int.go bede1d7f40 fix build; add document for exported symbols vor 8 Jahren
feature_stream_string.go 36b14963da #153 fix invalid utf8 using same implementation as the standard library vor 8 Jahren
fuzzy_mode_convert_table.md 779c3e2164 update conversion table vor 8 Jahren
jsoniter.go f0487718f6 document public symbols vor 8 Jahren
jsoniter_1dot8_only_test.go f1258b01aa fix #191 do not always assume the object field is simple string vor 8 Jahren
jsoniter_adapter_test.go 845d8438db #126 fix space in case map key is sorted vor 8 Jahren
jsoniter_alias_test.go bede1d7f40 fix build; add document for exported symbols vor 8 Jahren
jsoniter_any_array_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
jsoniter_any_bool_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
jsoniter_any_float_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
jsoniter_any_int_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
jsoniter_any_map_test.go b74ffb2e03 import github.com/stretchr/testify/require vor 8 Jahren
jsoniter_any_null_test.go b74ffb2e03 import github.com/stretchr/testify/require vor 8 Jahren
jsoniter_any_object_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
jsoniter_any_string_test.go ea8c33040f fix #228 vor 7 Jahren
jsoniter_array_test.go c15b4d116c #139 unmarshal non base64 into []byte vor 8 Jahren
jsoniter_bool_test.go b5d2607a6d replace should.Equal(nil, err) with should.NoError(err) vor 8 Jahren
jsoniter_customize_test.go a9b9c73b4d fix #207 delay unsupported type error reporting vor 8 Jahren
jsoniter_demo_test.go 6d0e6f3733 fix go report card vor 8 Jahren
jsoniter_encode_interface_test.go 93ce14316d increase coverage vor 8 Jahren
jsoniter_enum_marshaler_test.go b5d2607a6d replace should.Equal(nil, err) with should.NoError(err) vor 8 Jahren
jsoniter_fixed_array_test.go ba3857729b Fix encoding 0-length arrays vor 8 Jahren
jsoniter_float_test.go 25f147f530 add ReadNumber for Iterator. vor 8 Jahren
jsoniter_int_test.go c39a632e65 fix #227, fix empty json.Number vor 7 Jahren
jsoniter_interface_test.go 6dad2de6cc fix build vor 8 Jahren
jsoniter_invalid_test.go 11c1cce0d8 fix #217 when input is null, non-decodable type should not be considered as error, to be compatible with stdlib vor 8 Jahren
jsoniter_io_test.go f6da8e62c3 #133 validate json when Skip() vor 8 Jahren
jsoniter_iterator_test.go be9d4ded4f Use json.Number as the return vor 8 Jahren
jsoniter_large_file_test.go c15b4d116c #139 unmarshal non base64 into []byte vor 8 Jahren
jsoniter_map_test.go bd4364ab7c #129 fix read map with reader, should use ReadMapCB instead of ReadObjectCB vor 8 Jahren
jsoniter_must_be_valid_test.go b74ffb2e03 import github.com/stretchr/testify/require vor 8 Jahren
jsoniter_nested_test.go 818ae1331a #68 number to string vor 8 Jahren
jsoniter_null_test.go 9f6e5962a9 Improve stdlib compatibility vor 8 Jahren
jsoniter_object_test.go 0ab880662f fix #219 should check real value for empty instead of just the pointer for nested field vor 8 Jahren
jsoniter_optional_test.go b74ffb2e03 import github.com/stretchr/testify/require vor 8 Jahren
jsoniter_raw_message_test.go 46b20bbbec #178 SkipAndReturnBytes should return copy of memory vor 8 Jahren
jsoniter_reader_test.go 9b3ec40fd9 #133 fix empty struct skip; fix ] as empty array vor 8 Jahren
jsoniter_reflect_native_test.go b31b1301e2 #59 add ConfigFastest vor 8 Jahren
jsoniter_skip_test.go aed5a81f09 fix #190 handle empty input vor 8 Jahren
jsoniter_sloppy_test.go 5eded4f6ae implement skip number and string strictly vor 8 Jahren
jsoniter_stream_test.go dbb1ef3f63 #177 flush buffer should check available again vor 8 Jahren
jsoniter_string_test.go 156284b028 #137 fix unicode surrogate incompatibility vor 8 Jahren
jsoniter_struct_decoder_test.go 2dc0031b26 #152 gofmt vor 8 Jahren
jsoniter_struct_encoder_test.go 1f58120d43 Always skip unexported fields when encoding vor 8 Jahren
jsoniter_wrap_test.go d249b05a85 rename ValueType, to avoid collision with json.Number vor 8 Jahren
test.sh b46d0a2324 make test faster vor 8 Jahren
unmarshal_input_test.go f6da8e62c3 #133 validate json when Skip() vor 8 Jahren

README.md

Sourcegraph GoDoc Build Status codecov rcard License Gitter chat

A high-performance 100% compatible drop-in replacement of "encoding/json"

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