mirror of
https://github.com/json-iterator/go.git
synced 2025-04-23 11:37:32 +02:00
1. Null values for primitive types no longer clear the original value in the destination object. 2. Dereference multiple levels of pointers in the destination interface{} type before unmarshaling into it. This is needed to match stdlib behavior when working with nested interface{} fields. If the destination object is a pointer to interface{} then the incoming nil value should nil out the destination object but keep the reference to that nil value on its parent object. However if the destination object is an interface{} value it should set the reference to nil but keep the original object intact. 3. Correctly handle typed nil decode destinations.
#142 decode struct field should be case insensitive, the bug only happen for struct with more than 10 fields
A high-performance 100% compatible drop-in replacement of "encoding/json"
Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com
Benchmark
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"
jsoniter.Marshal(&data)
Replace
import "encoding/json"
json.Unmarshal(input, &data)
with
import "github.com/json-iterator/go"
jsoniter.Unmarshal(input, &data)
How to get
go get github.com/json-iterator/go
Contribution Welcomed !
Contributors
Report issue or pull request, or email taowen@gmail.com, or
Description
A high-performance 100% compatible drop-in replacement of "encoding/json"
http://jsoniter.com/migrate-from-go-std.html
Readme
MIT
2 MiB
Languages
Go
99.9%
Shell
0.1%