Source code for rez.utils.json

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


from __future__ import absolute_import
import json
from json import dumps  # noqa (forwarded)
import sys


if sys.version_info.major >= 3:

    def loads(data):
        return json.loads(data)

# py2
else:

[docs] def loads(json_text): """Avoids returning unicodes in py2. https://stackoverflow.com/questions/956867/how-to-get-string-objects-instead-of-unicode-from-json """ def _byteify(input, ignore_dicts=False): if isinstance(input, list): return [_byteify(x) for x in input] elif isinstance(input, unicode): try: return str(input) except UnicodeEncodeError: return input elif isinstance(input, dict) and not ignore_dicts: return { _byteify(k, ignore_dicts=True): _byteify(v, True) for k, v in input.items() } else: return input return _byteify(json.loads(json_text, object_hook=_byteify))