Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Commit 8641a10

Browse files
committed
Added new function JSON_DUPLICATE_KEYS.delete()
1 parent 5b8309a commit 8641a10

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,27 @@ print(JDKSObject.getObject())
152152
```
153153

154154
### JSON_DUPLICATE_KEYS.delete(`name`, `separator`="||", `parse_index`="$", `_isDebug_`=True)
155+
_Delete a key-value pair in a JSON object by key `name`_
156+
- `name`: the key name of the JSON object. Supported flatten key name format
157+
- `separator`:
158+
- `parse_index`:
159+
- `_isDebug_`: Show/ Hide debug error messages
155160
```python
161+
import json_duplicate_keys as jdks
162+
163+
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
164+
165+
JDKSObject = jdks.loads(Jstr)
166+
167+
print(JDKSObject.getObject())
168+
# OUTPUT: {'author': 'truocphan', 'version': '22.3.3', 'version{{{_2_}}}': 'latest', 'release': [{'version': 'latest'}], 'snapshot': {'author': 'truocphan', 'version': '22.3.3', 'release': [{'version': 'latest'}]}}
169+
170+
JDKSObject.delete("version")
171+
JDKSObject.delete("release||$0$")
172+
JDKSObject.delete("snapshot")
173+
174+
print(JDKSObject.getObject())
175+
# OUTPUT: {'author': 'truocphan', 'version{{{_2_}}}': 'latest', 'release': []}
156176
```
157177

158178
### JSON_DUPLICATE_KEYS.dumps(`dupSign_start`="{{{", `dupSign_end`="}}}", `_isDebug_`=True, `skipkeys`=False, `ensure_ascii`=True, `check_circular`=True, `allow_nan`=True, `cls`=None, `indent`=None, `separators`=None, `default`=None, `sort_keys`=False)

json_duplicate_keys/__init__.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -251,24 +251,28 @@ def update(self, name, value, separator="||", parse_index="$", _isDebug_=True):
251251
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
252252

253253

254-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
255-
# # # # # # # # # # # # # # # delete # # # # # # # # # # # # #
256-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
257-
# def delete(self, name, separator="||", parse_index="$"):
258-
# import re
254+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
255+
# # # # # # # # # # # # # # delete # # # # # # # # # # # # #
256+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
257+
def delete(self, name, separator="||", parse_index="$", _isDebug_=True):
258+
import re
259259

260-
# if self.get(name, separator=separator, parse_index=parse_index) != "JSON_DUPLICATE_KEYS_NOT_FOUND":
261-
# exec_expression = "del self.getObject()"
262-
# for k in name.split(separator):
263-
# if re.search("^"+re.escape(parse_index)+"\d+"+re.escape(parse_index)+"$", k):
264-
# exec_expression += "["+k.split(parse_index)[1]+"]"
265-
# else:
266-
# exec_expression += "["+repr(k)+"]"
260+
if self.get(name, separator=separator, parse_index=parse_index, _isDebug_=_isDebug_) != "JSON_DUPLICATE_KEYS_NOT_FOUND":
261+
try:
262+
exec_expression = "del self.getObject()"
267263

268-
# exec(exec_expression)
269-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
270-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
271-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
264+
for k in name.split(separator):
265+
if re.search("^"+re.escape(parse_index)+"\d+"+re.escape(parse_index)+"$", k):
266+
exec_expression += "["+k.split(parse_index)[1]+"]"
267+
else:
268+
exec_expression += "["+repr(k)+"]"
269+
270+
exec(exec_expression)
271+
except Exception as e:
272+
if _isDebug_: print("\x1b[31m[-] ExceptionError: {}\x1b[0m".format(e))
273+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
274+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
275+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
272276

273277

274278
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

0 commit comments

Comments
 (0)