Skip to content

ames0k0/jsontp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Script to generate a json tree for key and dumping the value of the key by tree

{"a": 1, "b": 2, "d": {"c": 3}}		# 'root -> d -> c'
{"a": 1, "b": 2, "d": [{"c": 3}]}	# 'root -> d -> [0] -> c'

Start

pip install jsontp
# or
pip install git+https://github.com/ames0k0/jsontp

Example (API)

from jsontp import PageDataTree
from jsontp.utils import FileIO
from jsontp.config import Key

input_filepath = 'ranker_writer-ignore_me.json'
output_filepath = 'ranker_writer_user_content-ignore_me.json'

file_io = FileIO(input_filepath)
file_data = file_io.load()

pdt = PageDataTree(file_data)
pdt_tree = pdt.tree_by_key(key='user', result_to=Key.SAVE)

user_data = pdt.data_by_tree(next(pdt_tree))
file_io.dump(user_data, output_filepath)

Example (CLI)

# Search for `key` (-k), filter by `key` (-fk)
python -m jsontp -i <input_filepath> -k id -fk user

# Search for `key` (-k), filter by `key` (-fk), print the value for `tree`
python -m jsontp -i <input_filepath> -k id -fk user -o '*'

# Print the value for `tree` (NOTE: `-o <output_filepath>` - to dump a value)
python -m jsontp -i <input_filepath> -t 'root -> props -> ... -> user' -o '*'

Dependencies

pip -V		# 22.1.1
python -V	# 3.10.5
pytest -V	# 6.2.5

Script structure

# tree -I '__pycache__|env|build|jsontp.egg-info'
.
├── jsontp
│   ├── __init__.py
│   ├── __main__.py
│   ├── config.py
│   ├── utils.py
│   └── run.py
├── tests
│   ├── __init__.py
│   └── test_page_data_tree.py
├── data
│   ├── ranker_writer-ignore_me.json
│   └── ranker_writer_user_content-ignore_me.json
├── setup.py
├── LICENSE
├── README.md
├── UPDATES.txt
└── CONTRIBUTORS.md

TODO

  • nested json
  • json in the list
  • check for multiple keys
    • return multiple keys (iterable result)
    • unique multiple keys (not every single item in the list)
  • check for keys by value
  • access to the data in the list
    • add and get the index from tree
  • handle errors on searching for a non string key
  • fix errors on reading and writing to the json file without filename
    • no need to test for writing
    • raising an error FileNotFoundError for not valid input filepath

API

  • Flags

CLI

  • Input
    • json file
  • Key
    • search: str
    • filter tree by must have key (-fk)
      • multiple (-fk)
    • filter tree by must have value (-fv)
      • multiple (-fv)
    • result (config.py[Key]): print, return
  • Limit
    • print
    • return
  • Output
    • dump a value to the file (-o <output_filepath>)
    • append to the dump file
    • print: '*'

Coding process: https://youtu.be/DkBAIKMN7x0

License

MIT
Copyright (c) 2022 Nodaa Gaji

About

JSON Tree parser for a given `key`

Resources

License

Stars

Watchers

Forks

Languages

  • Python 100.0%