Metadata-Version: 2.1
Name: meta-json
Version: 0.0.2
Summary: Extract metadata from a deserialized JSON.
Home-page: https://github.com/juangcr/meta_json
Author: Juan Cortés
Author-email: juang.cortes@outlook.com
License: BSD
Project-URL: Source code, https://github.com/juangcr/meta_json
Keywords: metadata json
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: test
Requires-Dist: coverage ; extra == 'test'
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: black ; extra == 'test'
Requires-Dist: flake8 ; extra == 'test'
Requires-Dist: mypy ; extra == 'test'

# meta_json

Given a JSON response as a dictionary, extract the metadata such as its structure and data model. 


## Introduction

This package is intended to help with JSON analysis by extracting its metadata and ease the data modeling tasks regularly used in design of databases, data catalogs, data warehouses, APIs, etc. 


## Installation

This package is available in PyPI and GitHub. Just run:

```python
  pip install meta-json
```

Or clone the repository:

```console
  git clone https://github.com/juangcr/meta_json.git 
  cd meta_json
  python setup.py install
```

## Usage

```python
  from meta_json import MetaJson
  
  your_json_data_as_dict = {
    "name": "John Doe",
    "contact": "john_doe@mail.net",
    "status": {
      "start_date": "1970-01-01",
      "active": "true",
      "credits": {
        "due": 10,
        "remaining": 90
        }
    }
  }

  meta = MetaJson(your_json_data_as_dict)
  
  meta.types  # Returns every data type available.
```

```console
  {
    "name": "str",
    "contact": "str", 
    "status": {
      "start_date": "datetime",
      "active": "str",
      "credits": {
        "due": "int",
        "remaining": "int"
        }
    }
  }
```

```python
  meta.attributes  # Returns a list with the main keys and all subkeys.
```

```console
  [
    [
      "name",
      "contact",
      "status"
    ],
    [
      "start_date",
      "active",
      "credits",
      "due",
      "remaining"
    ]
  ]
```

```python
  meta.layers  # Returns all keys grouped by layer depth.
```

```console
  {
    "layer_0" :[
      "name",
      "contact",
      "status"
    ],
    "layer_1": [
      "start_date",
      "active",
      "credits"
    ],
    "layer_2": [
      "due",
      "remaining"
    ]
  ]
```

