Flatten/ Unflatten and Load(s)/ Dump(s) JSON File/ Object with Duplicate Keys
Project description
JSON Duplicate Keys - PyPI
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
, case_insensitive
=False, 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 formatcase_insensitive
: the key name case (in)sensitiveseparator
: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
, case_insensitive
=False, 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
case_insensitive
: the key name case (in)sensitiveseparator
: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
, case_insensitive
=False, 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
case_insensitive
: the key name case (in)sensitiveseparator
: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
, case_insensitive
=False, 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 formatcase_insensitive
: the key name case (in)sensitiveseparator
: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.filter_values(value
, separator
="||", parse_index
="$", ordered_dict
=False)
value
: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_values("latest").dumps())
# OUTPUT: {"version": "latest", "release||$0$||version": "latest", "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'}]}}
CHANGELOG
json-duplicate-keys v2024.11.19
- Updated: Allows getting (
JSON_DUPLICATE_KEYS.get
), setting (JSON_DUPLICATE_KEYS.set
), updating (JSON_DUPLICATE_KEYS.update
), deleting (JSON_DUPLICATE_KEYS.delete
) JSON_DUPLICATE_KEYS objects with case-insensitive key names
json-duplicate-keys v2024.7.17
- Fixed: issue #3 break the set function when the key's value is empty. Thanks ptth222 for reporting this issue.
json-duplicate-keys v2024.4.20
- New: filter_values
- Updated: filter_keys
json-duplicate-keys v2024.3.24
- Updated: normalize_key, loads, get, set, update, delete
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
File details
Details for the file json-duplicate-keys-2024.11.19.tar.gz
.
File metadata
- Download URL: json-duplicate-keys-2024.11.19.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 559d4ce15bec46c1660b3e56179517fda2f9432e7c053453d46b846855b9efa3 |
|
MD5 | 266529b8de8de3eb226f430fd078cfa2 |
|
BLAKE2b-256 | 299dfe94a4fb19010dd9a6b67ab4b5e012727e3040d4a852180833975e998ed5 |
File details
Details for the file json_duplicate_keys-2024.11.19-py3-none-any.whl
.
File metadata
- Download URL: json_duplicate_keys-2024.11.19-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab9b6a0ea6e9d8fec59f2b2dd609f005df65a0f780dcb5bbfd1e0985e6aefea9 |
|
MD5 | 06b4fc8c4721032d6c62f77d4199fec9 |
|
BLAKE2b-256 | a84dabba2e85587fc42df8c8b65e10d2f50e7988ffa5007568aa50743c936328 |
File details
Details for the file json_duplicate_keys-2024.11.19-py2-none-any.whl
.
File metadata
- Download URL: json_duplicate_keys-2024.11.19-py2-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83440b022fb7ae65f787802b3a46a2421c6ed328d383068537dc4a4a45a83612 |
|
MD5 | bf0aa442882112d5bab96e1cd89ddcaa |
|
BLAKE2b-256 | 96602228f0c1bb52674af69211e09c7792d38b3c832c0026dd43e9875eea2c5d |