Compactly serialize instances of the ``Message`` class as JSON.
| 9 | |
| 10 | |
| 11 | class MessageEncoder(json.JSONEncoder): |
| 12 | """ |
| 13 | Compactly serialize instances of the ``Message`` class as JSON. |
| 14 | """ |
| 15 | |
| 16 | message_key = "__json_message" |
| 17 | |
| 18 | def default(self, obj): |
| 19 | if isinstance(obj, Message): |
| 20 | # Using 0/1 here instead of False/True to produce more compact json |
| 21 | is_safedata = 1 if isinstance(obj.message, SafeData) else 0 |
| 22 | message = [self.message_key, is_safedata, obj.level, obj.message] |
| 23 | if obj.extra_tags is not None: |
| 24 | message.append(obj.extra_tags) |
| 25 | return message |
| 26 | return super().default(obj) |
| 27 | |
| 28 | |
| 29 | class MessageDecoder(json.JSONDecoder): |
no outgoing calls