Flatten/ Unflatten and Load(s)/ Dump(s) JSON File/ Object with Duplicate Keys
Project description
JSON Duplicate Keys
Flatten/ Unflatten and Load(s)/ Dump(s) JSON File/ Object with Duplicate Keys
Installation
From PyPI:
pip install json-duplicate-keys
From Source:
git clone https://github.com/truocphan/json-duplicate-keys.git --branch <Branch/Tag>
cd json-duplicate-keys
python setup.py build
python setup.py install
Basic Usage
normalize_key(name
, dupSign_start
="{{{", dupSign_end
="}}}", _isDebug_
=False)
Normalize Key name
name
: key namedupSign_start
:dupSign_end
:_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
print(jdks.normalize_key("version{{{_2_}}}"))
# OUTPUT: version
loads(Jstr
, dupSign_start
="{{{", dupSign_end
="}}}", ordered_dict
=False, _isDebug_
=False)
Deserialize a JSON format string to a class JSON_DUPLICATE_KEYS
Jstr
: a JSON format stringdupSign_start
:dupSign_end
:ordered_dict
: preserves the order in which the Keys are inserted_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject)
# OUTPUT: <json_duplicate_keys.JSON_DUPLICATE_KEYS object at 0x00000270AE987940>
load(Jfilepath
, dupSign_start
="{{{", dupSign_end
="}}}", ordered_dict
=False, _isDebug_
=False)
Deserialize a JSON format string from a file to a class JSON_DUPLICATE_KEYS
Jfilepath
: The path to the file containing the JSON format stringdupSign_start
:dupSign_end
:ordered_dict
: preserves the order in which the Keys are inserted_isDebug_
: Show/ Hide debug error messages
# /path/to/file.json: {"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}
import json_duplicate_keys as jdks
Jfilepath = "/path/to/file.json"
JDKSObject = jdks.load(Jfilepath)
print(JDKSObject)
# OUTPUT: <json_duplicate_keys.JSON_DUPLICATE_KEYS object at 0x00000270AE986D40>
JSON_DUPLICATE_KEYS.getObject()
Get the JSON object
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JSON_DUPLICATE_KEYS.get(name
, separator
="||", parse_index
="$", _isDebug_
=False)
Get value in the JSON object by name
name
: the key name of the JSON object. Supported flatten key name formatseparator
:parse_index
:_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.get("version{{{_2_}}}"))
# OUTPUT: latest
print(JDKSObject.get("release||$0$"))
# OUTPUT: {'version': 'latest'}
print(JDKSObject.get("snapshot||author"))
# OUTPUT: truocphan
JSON_DUPLICATE_KEYS.set(name
, value
, separator
="||", parse_index
="$", dupSign_start
="{{{", dupSign_end
="}}}", ordered_dict
=False, _isDebug_
=False)
Set a new name
and value
for the JSON object
name
: new key name for the JSON object. Supported flat key name formatvalue
: value for keyname
separator
:parse_index
:dupSign_start
:dupSign_end
:ordered_dict
: preserves the order in which the Keys are inserted_isDebug_
: Show/Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {}
JDKSObject.set("author", "truocphan")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan'}
JDKSObject.set("version", "22.3.3")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3'}
JDKSObject.set("version", "latest")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest'}
JDKSObject.set("release", [{"version": "latest"}])
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}]}
JDKSObject.set("snapshot", {})
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {}}
JDKSObject.set("snapshot||author", "truocphan")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan'}}
Jstr = '[]'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: []
JDKSObject.set("author", "truocphan")
print(JDKSObject.getObject())
# OUTPUT: [{'author': 'truocphan'}]
JDKSObject.set("release", [])
print(JDKSObject.getObject())
# OUTPUT: [{'author': 'truocphan'}, {'release': []}]
JDKSObject.set("$1$||release||", {"version": "latest"})
print(JDKSObject.getObject())
# OUTPUT: [{'author': 'truocphan'}, {'release': [{'version': 'latest'}]}]
JSON_DUPLICATE_KEYS.update(name
, value
, separator
="||", parse_index
="$", _isDebug_
=False)
Update new value
for existing name
in the JSON object
name
: the key name of the JSON object. Supported flatten key name formatvalue
: new value for keyname
separator
:parse_index
:_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JDKSObject.update("version{{{_2_}}}", ["22.3.3", "latest"])
JDKSObject.update("snapshot||version", "latest")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': ['22.3.3', 'latest'], 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': 'latest', 'release': [{'version': 'latest'}]}}
JSON_DUPLICATE_KEYS.delete(name
, separator
="||", parse_index
="$", _isDebug_
=False)
Delete a key-value pair in a JSON object by key name
name
: the key name of the JSON object. Supported flatten key name formatseparator
:parse_index
:_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JDKSObject.delete("version")
JDKSObject.delete("release||$0$")
JDKSObject.delete("snapshot")
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version{{{_2_}}}': 'latest', 'release': []}
JSON_DUPLICATE_KEYS.filter_keys(name
, separator
="||", parse_index
="$", ordered_dict
=False)
name
:separator
:parse_index
:ordered_dict
:
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.filter_keys("version").dumps())
# OUTPUT: {"version": "22.3.3", "version": "latest", "release||$0$||version": "latest", "snapshot||version": "22.3.3", "snapshot||release||$0$||version": "latest"}
print(JDKSObject.dumps())
# OUTPUT: {"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}
JSON_DUPLICATE_KEYS.dumps(dupSign_start
="{{{", dupSign_end
="}}}", _isDebug_
=False, skipkeys
=False, ensure_ascii
=True, check_circular
=True, allow_nan
=True, cls
=None, indent
=None, separators
=None, default
=None, sort_keys
=False)
Serialize a JSON object to a JSON format string
dupSign_start
:dupSign_end
:_isDebug_
: Show/ Hide debug error messages- For remaining arguments, please refer to json.dump()
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JDKSObject.delete("version")
JDKSObject.delete("release||$0$")
JDKSObject.delete("snapshot")
print(JDKSObject.dumps())
# OUTPUT: {"author": "truocphan", "version": "latest", "release": []}
JSON_DUPLICATE_KEYS.dump(Jfilepath
, dupSign_start
="{{{", dupSign_end
="}}}", _isDebug_
=False, skipkeys
=False, ensure_ascii
=True, check_circular
=True, allow_nan
=True, cls
=None, indent
=None, separators
=None, default
=None, sort_keys
=False)
Serialize a JSON object to a JSON format string and write to a file
Jfilepath
: the path to the file to save the JSON format stringdupSign_start
:dupSign_end
:_isDebug_
: Show/ Hide debug error messages- For remaining arguments, please refer to json.dump()
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JDKSObject.delete("version")
JDKSObject.delete("release||$0$")
JDKSObject.delete("snapshot")
Jfilepath = "/path/to/file.json"
JDKSObject.dump(Jfilepath)
JDKSObject_load = jdks.load(Jfilepath)
print(JDKSObject_load.getObject())
# OUTPUT: {'author': 'truocphan', 'version': 'latest', 'release': []}
JSON_DUPLICATE_KEYS.flatten(separator
="||", parse_index
="$", ordered_dict
=False, _isDebug_
=False)
Flatten a JSON object to a single key-value pairs
separator
:parse_index
:ordered_dict
: preserves the order in which the Keys are inserted_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
JDKSObject.flatten()
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release||$0$||version': 'latest', 'snapshot||author': 'truocphan', 'snapshot||version': '22.3.3', 'snapshot||release||$0$||version': 'latest'}
JSON_DUPLICATE_KEYS.unflatten(separator
="||", parse_index
="$", ordered_dict
=False, _isDebug_
=False)
Unflatten a flattened JSON object back to a JSON object
separator
:parse_index
:ordered_dict
: preserves the order in which the Keys are inserted_isDebug_
: Show/ Hide debug error messages
import json_duplicate_keys as jdks
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release||$0$||version": "latest", "snapshot||author": "truocphan", "snapshot||version": "22.3.3", "snapshot||release||$0$||version": "latest"}'
JDKSObject = jdks.loads(Jstr)
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release||$0$||version': 'latest', 'snapshot||author': 'truocphan', 'snapshot||version': '22.3.3', 'snapshot||release||$0$||version': 'latest'}
JDKSObject.unflatten()
print(JDKSObject.getObject())
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
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
Built Distributions
Hashes for json-duplicate-keys-2024.2.21.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 135df7b4b8ee3c40a366b7dcf2f09b8cee711a10c6678b0224e309269ec8d034 |
|
MD5 | cd54b6b725740e173311cba87430e09b |
|
BLAKE2b-256 | 10085aff6b13c0ab2b566d6dff21c8f41d6160c109aba24f22d45d2be5fc8b80 |
Hashes for json_duplicate_keys-2024.2.21-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d4d6d1e2d61c2e953e925dcb52309cf67e307f4ce7c939721f1192972864492 |
|
MD5 | 5c3bc7f835a40cfd3465d3ba1da4d62a |
|
BLAKE2b-256 | ececc16c6b7b0a09b258a1b2063f0a1cc447b8ccc3ca3d8872a4c421d868539f |
Hashes for json_duplicate_keys-2024.2.21-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c36aa43b72cf3002689a32721fb02fcb81f18af340589dc42e2643b0463727b8 |
|
MD5 | b2d20e22a0d6270185f55cfec9503fac |
|
BLAKE2b-256 | 50ffd26ffbf28fa057b21c040ebf40efebb70fc299a6ff6ca9fb6d3cf6926179 |