Metadata-Version: 2.1
Name: codified-json
Version: 0.1.1
Summary: Codified-JSON - represent the same JSON data with less characters
Home-page: UNKNOWN
Author: Tim Huang
License: MIT
Platform: UNKNOWN
Description-Content-Type: text/markdown

# Codified-JSON

*Codified-JSON* is a new representation of *JSON* for transfering payloads as smaller sizes between software applications.

Please read the specifications for the *Codified-JSON* representation here: 

https://ty2huang.github.io/codified-json/

This library helps translate between python objects and the *Codified-JSON* representation (stored as string or compressed bytes).

## Installation

```
pip install --force-reinstall git+https://github.com/ty2huang/codified-json-python-library.git
```

## Getting started

Translating between JSON-compatible python objects and *Codified-JSON* is very easy.

```Python
import codified_json as cjson

data = [
    {"apple": "a", "clementine": 4, "banana": "e"}, 
    {"clementine": 4, "banana": 5, "apple": 34}, 
    {"banana": 4.5, "apple": False, "clementine": 4}, 
    {"clementine": 4, "apple": None, "banana": True}
]

# Encode into codified-json string using "cjson.as_str"
cjson_str = cjson.as_str(data)

# Decode back to python objects using "cjson.parse_str"
decoded_data = cjson.parse_str(cjson_str)

assert data == decoded_data
```

## Further Information

Following the example from the "Getting Started" section, if you print out `data` as JSON string vs *Codified-JSON* string, you'll find that the *Codified-JSON* representation is shorter.

```Python
import json

def test():
    json_str = json.dumps(data)
    print(f"As JSON (length {len(json_str)}):")
    print(json_str)
    print()
    print(f"As Codified-JSON (length {len(cjson_str)}):")
    print(cjson_str)

test()
```

Output is printed below. Size difference gets bigger as the JSON array size increases.

```json
As JSON (length 193):
[{"apple": "a", "clementine": 4, "banana": "e"}, {"clementine": 4, "banana": 5, "apple": 34}, {"banana": 4.5, "apple": false, "clementine": 4}, {"clementine": 4, "apple": null, "banana": true}]

As Codified-JSON (length 146):
{"s":{"0":["apple","banana","clementine"]},"b":[{"i":0,"v":["a","e",4]},{"i":0,"v":[34,5,4]},{"i":0,"v":[false,4.5,4]},{"i":0,"v":[null,true,4]}]}
```

## Tests

```
python setup.py pytest
```

## License

The "codified_json" module was written by Tim Huang, and is released under the MIT license.

See the file LICENSE for more details.


