json_wrapper.py 809 B

123456789101112131415161718192021222324
  1. try:
  2. from yt.packages.six import iteritems, text_type
  3. except ImportError:
  4. from six import iteritems, text_type
  5. try:
  6. from simplejson import load, dump, loads, dumps, JSONDecodeError # noqa
  7. except ImportError:
  8. # This version of simplejson has no compiled speedup module.
  9. from yt.packages.simplejson import load, dump, loads, dumps, JSONDecodeError # noqa
  10. def loads_as_bytes(*args, **kwargs):
  11. def encode(value):
  12. if isinstance(value, dict):
  13. return dict([(encode(k), encode(v)) for k, v in iteritems(value)])
  14. elif isinstance(value, list):
  15. return [encode(item) for item in value]
  16. elif isinstance(value, text_type):
  17. return value.encode("utf-8")
  18. else:
  19. return value
  20. return encode(loads(*args, **kwargs))