json.py 811 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import json
  2. from json_repair import repair_json
  3. def my_encoder(obj):
  4. """
  5. Encodes objects as dictionaries
  6. Parameters:
  7. - obj (Object): An object that will be converted
  8. Returns:
  9. - dict: If the object can be converted it is returned in dict format
  10. """
  11. if hasattr(obj, 'to_dict'):
  12. return obj.to_dict()
  13. def dumps(obj, **kwargs):
  14. """
  15. Serialize an object to str format
  16. """
  17. return json.dumps(obj, default=my_encoder, **kwargs)
  18. def loads(s, **kwargs):
  19. """
  20. Create a JSON object from str
  21. """
  22. json_start = s.find('{')
  23. json_end = s.rfind('}') + 1
  24. if json_start == -1 or json_end == -1:
  25. raise ValueError('Invalid response: no JSON found')
  26. s = s[json_start:json_end]
  27. s = repair_json(s)
  28. return json.loads(s, **kwargs)