go README

The project's README from github.com/json-iterator/go. As one markdown file: README.md.

Sourcegraph GoDoc Build Status codecov rcard License Gitter chat

A high-performance 100% compatible drop-in replacement of "encoding/json"

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

Always benchmark with your own workload. The result depends heavily on the data input.

Usage

100% compatibility with standard lib

Replace

import "encoding/json"
json.Marshal(&data)

with

import jsoniter "github.com/json-iterator/go"

var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Marshal(&data)

Replace

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

with

import jsoniter "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 [email protected], or Gitter chat

go (json-iterator/go)

Searching Database…

13.9K ·GitHub
archived
Что это такое?Высокопроизводительная JSON-библиотека для Go, позиционируемая как полностью совместимая замена стандартного пакета encoding/json без переделки кода: вы просто меняете импорт, а код остаётся как был.
Это библиотека, которую я импортирую, или утилита, которую я запускаю?Библиотека для Go. Вы импортируете её вместо encoding/json и вызываете из своего кода — здесь нет ни исполняемого файла, ни сервера, ни этапа генерации кода.
Как перевести мой проект на неё?Выполните go get github.com/json-iterator/go и замените импорт encoding/json на jsoniter. Конфигурация ConfigCompatibleWithStandardLibrary сохраняет поведение полностью идентичным стандартной библиотеке.
Нужно ли что-то ещё, кроме самого Go?Нет — достаточно набора инструментов Go. В отличие от easyjson, здесь не нужна статическая генерация кода перед использованием.
Проект до сих пор активно поддерживается?Нет — репозиторий на GitHub заархивирован и доступен только для чтения, так что обновлений больше не будет. Библиотека по-прежнему работает, но исправлений ошибок и новых функций ждать не стоит.
Она будет одинаково работать на Linux, macOS и Windows?Требований к конкретной операционной системе нет: это чистая библиотека на Go, поэтому она собирается и работает везде, где работает инструментарий Go.
Насколько она быстрее стандартной encoding/json?По бенчмаркам из README: декодирование 5623 ns/op против 35510 у стандартной библиотеки (примерно в 6 раз) с 3 аллокациями вместо 99; кодирование 837 ns/op против 2213 (примерно в 2,6 раза) с 384 вместо 712 выделенных байт.
Я увижу такой же прирост скорости на своих данных?Не обязательно — в README прямо предупреждают, что бенчмарки нужно всегда проводить на своей нагрузке, потому что результаты сильно зависят от входных данных.
Как она сравнивается с easyjson?В той же таблице бенчмарков она немного быстрее в обе стороны (5623 против 8499 ns/op на декодировании, 837 против 883 на кодировании), и, в отличие от easyjson, ей не нужна статическая генерация кода.
What are similar projects?gjson, fastjson, SwiftyJSON, simdjson, nom, REDox, liteparse, goquery
Size
1.2 MB
Stars
13.9K
Age
9y
Commits · 90 Days