1. Brian Olson
  2. cbor

Overview

HTTPS SSH

Concise Binary Object Representation (CBOR) is a superset of JSON's schema that's faster and more compact.

This repository is moving to github as two new repositories, one for Go, one for Python: https://github.com/brianolson/cbor_py https://github.com/brianolson/cbor_go

This repository contains implementations for Python and Go.

Python

This Python implementation provides loads()/dumps() like the json standard library.

Compare to Python 2.7.5's standard library implementation of json:

serialized 50000 objects into 1163097 cbor bytes in 0.05 seconds (1036613.48/s) and 1767001 json bytes in 0.22 seconds (224772.48/s)
compress to 999179 bytes cbor.gz and 1124500 bytes json.gz
load 50000 objects from cbor in 0.07 secs (763708.80/sec) and json in 0.32 (155348.97/sec)

There is also a pure-python implementation which gets about 1/3 the speed of json's C augmented speed.

Tested in Python 2.7.5, 2,7.6, 3.3.3, and 3.4.0

Available on pypi:

pip install cbor

Go

import cbor "bitbucket.org/bodhisnarkva/cbor/go"

The Go implementation is newer. It attempts to do serialization to/from struct types using reflection, but doesn't do 100% of cases like that right. It should do everything fine serializing map[string]interface{} and []interface{} and other basic types. It passes the test of decoding 100% of CBOR common appendix test strings.