state->keys = njs_array(&stringify->replacer);
} else {
- if (njs_is_external(value)) {
- state->keys = njs_extern_keys_array(vm, value->external.proto);
-
- } else {
- state->keys = njs_value_own_enumerate(vm, value, NJS_ENUM_KEYS,
- stringify->keys_type, 0);
- }
+ state->keys = njs_value_own_enumerate(vm, value, NJS_ENUM_KEYS,
+ stringify->keys_type, 0);
if (njs_slow_path(state->keys == NULL)) {
return NULL;
#define njs_json_is_object(value) \
(((value)->type == NJS_OBJECT) \
|| ((value)->type == NJS_OBJECT_SYMBOL) \
+ || ((value)->type == NJS_EXTERNAL) \
|| ((value)->type == NJS_ARRAY) \
|| ((value)->type >= NJS_REGEXP))
{ njs_str("var e = URIError('e'); e.foo = 'E'; JSON.stringify(e)"),
njs_str("{\"foo\":\"E\"}") },
- { njs_str("JSON.stringify([$r])"),
- njs_str("[null]") },
+ { njs_str("var r = JSON.parse(JSON.stringify($r));"
+ "[r.uri, r.host, r.props.a, njs.dump(r.vars), njs.dump(r.consts), r.header['02']]"),
+ njs_str("АБВ,АБВГДЕЁЖЗИЙ,1,{},{},02|АБВ") },
{ njs_str("JSON.stringify({get key() {throw new Error('Oops')}})"),
njs_str("Error: Oops") },