Tool to flatten stream of JSON-like objects, configured via schema
Project description
A tool to flatten JSON-like objects, allowing to configure via an annotated JSON schema
Free software: BSD license
Documentation: https://flatson.readthedocs.org.
Features
Flattens Python dictionaries using a JSON schema
Supports per-field configuration via the schema
Usage:
>>> from flatson import Flatson >>> schema = { "$schema": "http://json-schema.org/draft-04/schema", "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "number"}, "address": { "type": "object", "properties": {"city": {"type": "string"}, "street": {"type": "string"}} }, "skills": {"type": "array", "items": {"type": "string"}} } } >>> sample = { "name": "Claudio", "age": 42, "address": {"city": "Paris", "street": "Rue de Sevres"}, "skills": ["hacking", "soccer"]} >>> f = Flatson(schema) >>> f.fieldnames ['address.city', 'address.street', 'age', 'name', 'skills'] >>> f.flatten(sample) ['Paris', 'Rue de Sevres', 42, 'Claudio', '["hacking","soccer"]']
You can get a dict with the field names order preserved:
>>> f.flatten_dict(sample) OrderedDict([('address.city', 'Paris'), ('address.street', 'Rue de Sevres'), ('age', 42), ('name', 'Claudio'), ('skills', '["hacking","soccer"]')])
You can also configure array serialization behavior through the schema (default JSON):
>>> schema = { "$schema": "http://json-schema.org/draft-04/schema", "type": "object", "properties": { "name": {"type": "string"}, "skills": { "type": "array", "items": {"type": "string"}, "flatson_serialize": {"method": "join_values"}, } } } >>> f = Flatson(schema) >>> f.flatten({"name": "Salazar", "skills": ["hacking", "socker", "partying"]}) ['Salazar', 'hacking,socker,partying']
History
0.1.0 (2015-06-02)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
flatson-0.1.0.tar.gz
(15.6 kB
view details)
Built Distribution
File details
Details for the file flatson-0.1.0.tar.gz
.
File metadata
- Download URL: flatson-0.1.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e63836d7b7f403ef56f43e62478bf322c77e9510a82a6c878e43c11b163cb8a |
|
MD5 | 5a9e6a2ffb3e964419fcbcc49636333b |
|
BLAKE2b-256 | 2dad1448b5223740acbe699a2d9740c94cd95fbee69593b4d65a49663cfe7ce5 |
File details
Details for the file flatson-0.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: flatson-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 561d8401cff143e4977f02bc2812d890e88aec99c4651eac63da69af1ef07b45 |
|
MD5 | 5f16b2107aef81b2e401f416814e13f6 |
|
BLAKE2b-256 | 29655797c3cd3ab571c889817d28cb11c4c5ba739f7c1c0e46c9d710943bd87a |