diff options
author | Pieter Eendebak <pieter.eendebak@gmail.com> | 2024-05-06 08:04:39 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-06 08:04:39 (GMT) |
commit | 05adfbba2abafcdd271bf144a7b3f80bcd927288 (patch) | |
tree | a52b118653d204eb15630e4aba5e4c2daa035a7d /Lib/json | |
parent | 7758be431807d574e0f1bbab003796585ae46719 (diff) | |
download | cpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.zip cpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.tar.gz cpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.tar.bz2 |
gh-95382: Improve performance of json encoder with indent (GH-118105)
Diffstat (limited to 'Lib/json')
-rw-r--r-- | Lib/json/encoder.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Lib/json/encoder.py b/Lib/json/encoder.py index 597849e..323332f 100644 --- a/Lib/json/encoder.py +++ b/Lib/json/encoder.py @@ -244,15 +244,18 @@ class JSONEncoder(object): return text - if (_one_shot and c_make_encoder is not None - and self.indent is None): + if self.indent is None or isinstance(self.indent, str): + indent = self.indent + else: + indent = ' ' * self.indent + if _one_shot and c_make_encoder is not None: _iterencode = c_make_encoder( - markers, self.default, _encoder, self.indent, + markers, self.default, _encoder, indent, self.key_separator, self.item_separator, self.sort_keys, self.skipkeys, self.allow_nan) else: _iterencode = _make_iterencode( - markers, self.default, _encoder, self.indent, floatstr, + markers, self.default, _encoder, indent, floatstr, self.key_separator, self.item_separator, self.sort_keys, self.skipkeys, _one_shot) return _iterencode(o, 0) @@ -272,9 +275,6 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr, _intstr=int.__repr__, ): - if _indent is not None and not isinstance(_indent, str): - _indent = ' ' * _indent - def _iterencode_list(lst, _current_indent_level): if not lst: yield '[]' |