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

Commit 25dd862

Browse files
committed
Released json-duplicate-keys v2024.2.21
1 parent e9d0d4a commit 25dd862

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,27 @@ print(JDKSObject.getObject())
236236
```
237237
---
238238

239+
### JSON_DUPLICATE_KEYS.filter_keys(`name`, `separator`="||", `parse_index`="$", `ordered_dict`=False)
240+
241+
- `name`:
242+
- `separator`:
243+
- `parse_index`:
244+
- `ordered_dict`:
245+
```python
246+
import json_duplicate_keys as jdks
247+
248+
Jstr = '{"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}'
249+
250+
JDKSObject = jdks.loads(Jstr)
251+
252+
print(JDKSObject.filter_keys("version").dumps())
253+
# OUTPUT: {"version": "22.3.3", "version": "latest", "release||$0$||version": "latest", "snapshot||version": "22.3.3", "snapshot||release||$0$||version": "latest"}
254+
255+
print(JDKSObject.dumps())
256+
# OUTPUT: {"author": "truocphan", "version": "22.3.3", "version": "latest", "release": [{"version": "latest"}], "snapshot": {"author": "truocphan", "version": "22.3.3", "release": [{"version": "latest"}]}}
257+
```
258+
---
259+
239260
### 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)
240261
_Serialize a JSON object to a JSON format string_
241262
- `dupSign_start`:

json_duplicate_keys/__init__.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,26 @@ def delete(self, name, separator="||", parse_index="$", _isDebug_=False):
444444
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
445445

446446

447+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
448+
# # # # # # # # # # # # filter_keys # # # # # # # # # # # # #
449+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
450+
def filter_keys(self, name, separator="||", parse_index="$", ordered_dict=False):
451+
import re, copy
452+
453+
JDKSObject = copy.deepcopy(self)
454+
JDKSObject.flatten(separator=separator, parse_index=parse_index, ordered_dict=ordered_dict)
455+
newJDKSObject = loads("{}", ordered_dict=ordered_dict)
456+
457+
for k in JDKSObject.getObject():
458+
if re.search(name, k):
459+
newJDKSObject.set(k, JDKSObject.get(k, separator="§§"+separator+"§§", parse_index="§§"+parse_index+"§§"), separator="§§"+separator+"§§", parse_index="§§"+parse_index+"§§", ordered_dict=ordered_dict)
460+
461+
return newJDKSObject
462+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
463+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
464+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
465+
466+
447467
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
448468
# # # # # # # # # # # # # # dumps # # # # # # # # # # # # # #
449469
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setuptools.setup(
44
name="json-duplicate-keys",
5-
version="2024.2.3",
5+
version="2024.2.21",
66
author="TP Cyber Security",
77
license="MIT",
88
author_email="[email protected]",
@@ -16,6 +16,6 @@
1616
"Programming Language :: Python :: 2",
1717
"Programming Language :: Python :: Implementation :: Jython"
1818
],
19-
keywords=["json", "duplicate keys", "json duplicate keys", "flatten", "unflatten"],
19+
keywords=["TPCyberSec", "json", "duplicate keys", "json duplicate keys", "flatten", "unflatten"],
2020
packages=["json_duplicate_keys"],
2121
)

0 commit comments

Comments
 (0)