@@ -10,6 +10,9 @@ cdef jsonb_encode(CodecContext settings, WriteBuffer buf, obj):
1010 char * str
1111 ssize_t size
1212
13+ if settings.is_encoding_json():
14+ obj = settings.get_json_encoder().encode(obj)
15+
1316 as_pg_string_and_size(settings, obj, & str , & size)
1417
1518 if size > 0x7fffffff - 1 :
@@ -26,4 +29,29 @@ cdef jsonb_decode(CodecContext settings, FRBuffer *buf):
2629 if format != 1 :
2730 raise ValueError (' unexpected JSONB format: {}' .format(format))
2831
29- return text_decode(settings, buf)
32+ rv = text_decode(settings, buf)
33+
34+ if settings.is_decoding_json():
35+ rv = settings.get_json_decoder().decode(rv)
36+
37+ return rv
38+
39+
40+ cdef json_encode(CodecContext settings, WriteBuffer buf, obj):
41+ cdef:
42+ char * str
43+ ssize_t size
44+
45+ if settings.is_encoding_json():
46+ obj = settings.get_json_encoder().encode(obj)
47+
48+ text_encode(settings, buf, obj)
49+
50+
51+ cdef json_decode(CodecContext settings, FRBuffer * buf):
52+ rv = text_decode(settings, buf)
53+
54+ if settings.is_decoding_json():
55+ rv = settings.get_json_decoder().decode(rv)
56+
57+ return rv
0 commit comments