mirror of
https://github.com/ziirish/burp-ui.git
synced 2026-05-15 06:05:58 -06:00
52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
# -*- coding: utf8 -*-
|
|
"""
|
|
.. module:: burpui._json
|
|
:platform: Unix
|
|
:synopsis: Burp-UI json compatibility module.
|
|
|
|
.. moduleauthor:: Ziirish <hi+burpui@ziirish.me>
|
|
|
|
"""
|
|
import ujson
|
|
|
|
__implements__ = ["dumps", "loads"]
|
|
ori_dumps = None
|
|
ori_loads = None
|
|
|
|
IMPLEMENTED_DUMPS_KWARGS = [
|
|
"ensure_ascii",
|
|
"double_precision",
|
|
"encode_html_chars",
|
|
"sort_keys",
|
|
]
|
|
IMPLEMENTED_LOADS_KWARGS = [
|
|
"precise_float",
|
|
]
|
|
|
|
|
|
# ujson does not implement all the features of the original json parser
|
|
# the trick here is to catch such an exception to fallback to the original one
|
|
def dumps(*args, **kwargs):
|
|
keys = []
|
|
if kwargs:
|
|
keys = kwargs.keys()
|
|
for key in keys:
|
|
if key not in IMPLEMENTED_DUMPS_KWARGS:
|
|
return ori_dumps(*args, **kwargs)
|
|
try:
|
|
return ujson.dumps(*args, **kwargs)
|
|
except:
|
|
return ori_dumps(*args, **kwargs)
|
|
|
|
|
|
def loads(*args, **kwargs):
|
|
keys = []
|
|
if kwargs:
|
|
keys = kwargs.keys()
|
|
for key in keys:
|
|
if key not in IMPLEMENTED_LOADS_KWARGS:
|
|
return ori_loads(*args, **kwargs)
|
|
try:
|
|
return ujson.loads(*args, **kwargs)
|
|
except:
|
|
return ori_loads(*args, **kwargs)
|