Нема описа

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

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