1
0
mirror of https://github.com/json-iterator/go.git synced 2025-04-23 11:37:32 +02:00
Oleg Shaldybin 9f6e5962a9 Improve stdlib compatibility
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.
2017-09-16 16:57:51 -07:00
2017-09-06 13:18:05 +08:00
2017-08-10 20:58:49 -07:00
2017-07-02 12:58:14 +08:00
2017-09-07 17:12:42 +02:00
2017-07-09 11:24:26 +08:00
2017-07-10 15:23:35 +08:00
2017-07-09 16:09:23 +08:00
2017-09-05 13:00:03 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 16:09:23 +08:00
2017-08-25 12:53:23 +08:00
2017-08-02 09:20:43 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 11:12:37 +08:00
2017-09-05 13:00:03 +08:00
2017-06-20 15:11:01 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 16:09:23 +08:00
2016-11-30 08:30:24 +08:00
2017-07-31 21:49:02 +08:00
2017-07-15 18:09:06 +08:00

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"
jsoniter.Marshal(&data)

Replace

import "encoding/json"
json.Unmarshal(input, &data)

with

import "github.com/json-iterator/go"
jsoniter.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

Description
Languages
Go 99.9%
Shell 0.1%