py/objdict: Support ujson.dump() of OrderedDict objects.
Following CPython, OrderedDict are dumped with the syntax of dict.
This commit is contained in:
parent
82d358510b
commit
1e87f11d3f
@ -60,7 +60,7 @@ STATIC void dict_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_
|
|||||||
if (!(MICROPY_PY_UJSON && kind == PRINT_JSON)) {
|
if (!(MICROPY_PY_UJSON && kind == PRINT_JSON)) {
|
||||||
kind = PRINT_REPR;
|
kind = PRINT_REPR;
|
||||||
}
|
}
|
||||||
if (MICROPY_PY_COLLECTIONS_ORDEREDDICT && self->base.type != &mp_type_dict) {
|
if (MICROPY_PY_COLLECTIONS_ORDEREDDICT && self->base.type != &mp_type_dict && kind != PRINT_JSON) {
|
||||||
mp_printf(print, "%q(", self->base.type->name);
|
mp_printf(print, "%q(", self->base.type->name);
|
||||||
}
|
}
|
||||||
mp_print_str(print, "{");
|
mp_print_str(print, "{");
|
||||||
@ -83,7 +83,7 @@ STATIC void dict_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_
|
|||||||
mp_obj_print_helper(print, next->value, kind);
|
mp_obj_print_helper(print, next->value, kind);
|
||||||
}
|
}
|
||||||
mp_print_str(print, "}");
|
mp_print_str(print, "}");
|
||||||
if (MICROPY_PY_COLLECTIONS_ORDEREDDICT && self->base.type != &mp_type_dict) {
|
if (MICROPY_PY_COLLECTIONS_ORDEREDDICT && self->base.type != &mp_type_dict && kind != PRINT_JSON) {
|
||||||
mp_print_str(print, ")");
|
mp_print_str(print, ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
tests/extmod/ujson_dumps_ordereddict.py
Normal file
12
tests/extmod/ujson_dumps_ordereddict.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
try:
|
||||||
|
import ujson as json
|
||||||
|
from ucollections import OrderedDict
|
||||||
|
except ImportError:
|
||||||
|
try:
|
||||||
|
import json
|
||||||
|
from collections import OrderedDict
|
||||||
|
except ImportError:
|
||||||
|
print("SKIP")
|
||||||
|
raise SystemExit
|
||||||
|
|
||||||
|
print(json.dumps(OrderedDict(((1, 2), (3, 4)))))
|
Loading…
Reference in New Issue
Block a user