1
0
mirror of https://github.com/json-iterator/go.git synced 2025-07-03 23:30:41 +02:00
Go to file
Oleg Shaldybin 1f58120d43 Always skip unexported fields when encoding
Skip creating encoders for unexported fields. They are not participating
in JSON marshaling anyway. This allows using unexported fields of
non-marshalable types in structs.

As a side-effect of this change it's no longer possible to marshal
unexported JSON fields by adding a custom type extenstion. It seems this
is desired behavior since it matches standard library and jsoniter
already disallows `json:"-"` fields from participating in custom
extensions.

Fixes #174.
2017-09-18 11:02:15 -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-09-17 16:07:42 +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%