json_compressor.py 875 B

123456789101112131415161718192021222324252627
  1. import json
  2. import brotli
  3. import base64
  4. class JsonCompressor:
  5. @staticmethod
  6. def compress_json(data):
  7. """
  8. Compress a json object and encode it with base64
  9. """
  10. json_str = json.dumps(data)
  11. json_bytes = json_str.encode('utf-8')
  12. compressed = brotli.compress(json_bytes, quality=6)
  13. compressed_str = base64.b64encode(compressed).decode('utf-8') # convert bytes to string
  14. return compressed_str
  15. @staticmethod
  16. def decompress_json(compressed_str):
  17. """
  18. Decode the base64 string and decompress the json object
  19. """
  20. compressed = base64.b64decode(compressed_str.encode('utf-8')) # convert string to bytes
  21. decompressed_bytes = brotli.decompress(compressed)
  22. json_str = decompressed_bytes.decode('utf-8')
  23. data = json.loads(json_str)
  24. return data