| 130 | return self._serializer.serialize(value), FMT_JSON |
| 131 | |
| 132 | def decode_value(self, |
| 133 | value, # type: bytes |
| 134 | flags # type: int |
| 135 | ) -> Any: |
| 136 | |
| 137 | format = get_decode_format(flags) |
| 138 | |
| 139 | # flags=[0 | None] special case, attempt JSON deserialize |
| 140 | if format in [FMT_JSON, 0, None]: |
| 141 | try: |
| 142 | return self._serializer.deserialize(value) |
| 143 | except Exception: |
| 144 | # if error encountered, assume return bytes |
| 145 | return value |
| 146 | elif format == FMT_BYTES: |
| 147 | raise ValueFormatException("The JSONTranscoder (default transcoder) does not support binary format") |
| 148 | elif format == FMT_UTF8: |
| 149 | raise ValueFormatException("The JSONTranscoder (default transcoder) does not support string format") |
| 150 | else: |
| 151 | raise ValueFormatException(f"Unrecognized format provided: {format}") |
| 152 | |
| 153 | |
| 154 | class RawJSONTranscoder(Transcoder): |