Sin descripción

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

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