diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index 35f59af1135..c1456923a70 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -141,11 +141,23 @@ def _load_config(filename): return None +class JSONBytesDecoder(json.JSONEncoder): + """JSONEncoder to decode bytes objects to unicode.""" + + # pylint: disable=method-hidden + def default(self, obj): + """Decode object if it's a bytes object, else defer to baseclass.""" + if isinstance(obj, bytes): + return obj.decode() + return json.JSONEncoder.default(self, obj) + + def _save_config(filename, config): """Save configuration.""" try: with open(filename, 'w') as fdesc: - fdesc.write(json.dumps(config)) + fdesc.write(json.dumps( + config, cls=JSONBytesDecoder, indent=4, sort_keys=True)) except (IOError, TypeError) as error: _LOGGER.error('Saving config file failed: %s', error) return False