Skip to main content

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 name
  • dupSign_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 string
  • 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 = '{"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 string
  • dupSign_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 format
  • case_insensitive: the key name case (in)sensitive
  • 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.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 format
  • value: value for key name
  • case_insensitive: the key name case (in)sensitive
  • 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, 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 format
  • value: new value for key name
  • case_insensitive: the key name case (in)sensitive
  • 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, 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 format
  • case_insensitive: the key name case (in)sensitive
  • 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.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 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")

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

json-duplicate-keys-2024.11.19.tar.gz (8.2 kB view details)

Uploaded Source

Built Distributions

json_duplicate_keys-2024.11.19-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

json_duplicate_keys-2024.11.19-py2-none-any.whl (7.9 kB view details)

Uploaded Python 2

File details

Details for the file json-duplicate-keys-2024.11.19.tar.gz.

File metadata

File hashes

Hashes for json-duplicate-keys-2024.11.19.tar.gz
Algorithm Hash digest
SHA256 559d4ce15bec46c1660b3e56179517fda2f9432e7c053453d46b846855b9efa3
MD5 266529b8de8de3eb226f430fd078cfa2
BLAKE2b-256 299dfe94a4fb19010dd9a6b67ab4b5e012727e3040d4a852180833975e998ed5

See more details on using hashes here.

File details

Details for the file json_duplicate_keys-2024.11.19-py3-none-any.whl.

File metadata

File hashes

Hashes for json_duplicate_keys-2024.11.19-py3-none-any.whl
Algorithm Hash digest
SHA256 ab9b6a0ea6e9d8fec59f2b2dd609f005df65a0f780dcb5bbfd1e0985e6aefea9
MD5 06b4fc8c4721032d6c62f77d4199fec9
BLAKE2b-256 a84dabba2e85587fc42df8c8b65e10d2f50e7988ffa5007568aa50743c936328

See more details on using hashes here.

File details

Details for the file json_duplicate_keys-2024.11.19-py2-none-any.whl.

File metadata

File hashes

Hashes for json_duplicate_keys-2024.11.19-py2-none-any.whl
Algorithm Hash digest
SHA256 83440b022fb7ae65f787802b3a46a2421c6ed328d383068537dc4a4a45a83612
MD5 bf0aa442882112d5bab96e1cd89ddcaa
BLAKE2b-256 96602228f0c1bb52674af69211e09c7792d38b3c832c0026dd43e9875eea2c5d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page