To transform flat data structures into nested object graphs matching JSON
schema definitions, this package defines a mapping language. It defines how
the columns of a source data set (e.g. a CSV file, database table) are to be
converted to the fields of a JSON schema.
The format allows mapping nested structures, including arrays. It also supports
the application of very basic data transformation steps, such as generating a
URL slug or hashing a column value.
## Example mapping
The mapping format is independent of any particular JSON schema, such that
multiple mappings could be defined for any one particular schema.
```json
{
"schema": {"$ref": "http://www.popoloproject.com/schemas/person.json"},
"mapping": {
"id": {"column": "person_id"},
"name": {"column": "person_name"},
"memberships": [{
"mapping": {
"role": {"default": "Member of Organization"},
"organization": {
"mapping": {
"id": {
"columns": ["org_id"],
"constant": "default-org"
},
"name": {
"column": "org_name",
"constant": "Default Organization",
"transforms": ["strip"]
}
}
}
}
}]
}
}
```
This mapping would apply to a four-column CSV file and map it to a set of
nested JSON objects (a [Popolo](http://www.popoloproject.com/) person, with a
membership in an organization).
## Data Transforms
While ``jsonmapping`` is not a data cleaning tool, it supports some very basic
data transformation operations that can be applied on a particular column or
set of columns. These include:
* ``coalesce``: Select the first non-null value from the list of items.
* ``slugify``: Transform each string into a URL slug form.
* ``join``: Merge together the string values of all selected columns.
* ``upper``: Transform the text to upper case.
* ``lower``: Transform the text to lower case.
* ``strip``: Remove leading and trailing whitespace.
* ``hash``: Generate a SHA1 hash of the given value.
## Usage
``jsonmapping`` is available on the Python Package Index:
```bash
$ pip install jsonmapping
```
The library can then be used as follows:
```python
from jsonschema import RefResolver
from jsonmapping import Mapper
# ... load the mapping ...
mapping = load_mapping()
resolver = RefResolver.from_schema(mapping)
# ... grab some data ...
rows = read_csv()
objs = []
# This will transform flat data rows into nested JSON objects:
for obj, err in Mapper.apply_iter(rows, mapping, resolver):
if err is None:
objs.append(obj)
```
## Tests
The test suite will usually be executed in it's own ``virtualenv`` and perform a
coverage check as well as the tests. To execute on a system with ``virtualenv``
and ``make`` installed, type:
```bash
$ make test
```
Metadata
Release files for jsonmapping 0.7.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jsonmapping-0.7.4.tar.gz | 11.4 kB | Without provenance | Details for jsonmapping-0.7.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jsonmapping-0.7.4-py2-none-any.whl | Python 2 | none | any | Details for jsonmapping-0.7.4-py2-none-any.whl |
Total release size: 26.8 kB
Release files / jsonmapping-0.7.4.tar.gz
| Download URL | jsonmapping-0.7.4.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
334e52919dc66421344d14cca681eaecf0cb111accebd7bef51bde5940661457
|
|
BLAKE2b-256 checksum How to use checksums |
7c35cb1f0242b5968e80bce162c4031f9f133cc0772ce3e705e5367f1ce06ea6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / jsonmapping-0.7.4-py2-none-any.whl
| Download URL | jsonmapping-0.7.4-py2-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 2 |
|
SHA-256 checksum How to use checksums |
03f1e9c3201cd0c4f39b98eb305c98f9de1ceb785fb68d52a742f4786294eb77
|
|
BLAKE2b-256 checksum How to use checksums |
73920e59c43fe4f95b5105021ed09992d7a73198dc6c60f001f87a00ab513834
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for jsonmapping 0.7.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.