Няма описание

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