Skip to content

Commit d9bca1f

Browse files
committed
extmod/modujson: Implement ujson.dump() function.
1 parent 9e8b7b1 commit d9bca1f

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

extmod/modujson.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@
3434

3535
#if MICROPY_PY_UJSON
3636

37+
STATIC mp_obj_t mod_ujson_dump(mp_obj_t obj, mp_obj_t stream) {
38+
if (!MP_OBJ_IS_OBJ(stream)) {
39+
mp_raise_TypeError(NULL);
40+
}
41+
mp_print_t print = {MP_OBJ_TO_PTR(stream), mp_stream_write_adaptor};
42+
mp_obj_print_helper(&print, obj, PRINT_JSON);
43+
return mp_const_none;
44+
}
45+
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_ujson_dump_obj, mod_ujson_dump);
46+
3747
STATIC mp_obj_t mod_ujson_dumps(mp_obj_t obj) {
3848
vstr_t vstr;
3949
mp_print_t print;
@@ -283,6 +293,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_ujson_loads_obj, mod_ujson_loads);
283293

284294
STATIC const mp_rom_map_elem_t mp_module_ujson_globals_table[] = {
285295
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ujson) },
296+
{ MP_ROM_QSTR(MP_QSTR_dump), MP_ROM_PTR(&mod_ujson_dump_obj) },
286297
{ MP_ROM_QSTR(MP_QSTR_dumps), MP_ROM_PTR(&mod_ujson_dumps_obj) },
287298
{ MP_ROM_QSTR(MP_QSTR_load), MP_ROM_PTR(&mod_ujson_load_obj) },
288299
{ MP_ROM_QSTR(MP_QSTR_loads), MP_ROM_PTR(&mod_ujson_loads_obj) },

tests/extmod/ujson_dump.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
try:
2+
from uio import StringIO
3+
import ujson as json
4+
except:
5+
try:
6+
from io import StringIO
7+
import json
8+
except ImportError:
9+
print("SKIP")
10+
raise SystemExit
11+
12+
s = StringIO()
13+
json.dump(False, s)
14+
print(s.getvalue())
15+
16+
s = StringIO()
17+
json.dump({"a": (2, [3, None])}, s)
18+
print(s.getvalue())

0 commit comments

Comments
 (0)