diff --git a/companion.py b/companion.py index f2b88136..2d83a38c 100644 --- a/companion.py +++ b/companion.py @@ -125,6 +125,14 @@ class CAPIData(UserDict): self.data['lastStarport']['ships'] = {'shipyard_list': {}, 'unavailable_list': []} +class CAPIDataEncoder(json.JSONEncoder): + """Allow for json dumping via specified encoder.""" + + def default(self, o): + """Tell JSON encoder that we're actually just a dict.""" + return o.__dict__ + + class CAPIDataRawEndpoint: """Last received CAPI response for a specific endpoint.""" @@ -1099,7 +1107,7 @@ class Session(object): timestamp = time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime()) with open(f'dump/{system}{station}.{timestamp}.json', 'wb') as h: - h.write(json.dumps(dict(data), + h.write(json.dumps(data, cls=CAPIDataEncoder, ensure_ascii=False, indent=2, sort_keys=True, diff --git a/loadout.py b/loadout.py index 92c9ff3d..dabce54b 100644 --- a/loadout.py +++ b/loadout.py @@ -13,7 +13,10 @@ import util_ships def export(data, filename=None): - string = json.dumps(companion.ship(data), ensure_ascii=False, indent=2, sort_keys=True, separators=(',', ': ')) # pretty print + string = json.dumps( + companion.ship(data), cls=companion.CAPIDataEncoder, + ensure_ascii=False, indent=2, sort_keys=True, separators=(',', ': ') + ) # pretty print if filename: with open(filename, 'wt') as h: