summaryrefslogtreecommitdiff
path: root/ext/json
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-08-23 16:06:38 +0200
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2025-08-27 10:01:52 +0900
commitc3a80ca58226f588ef393ab5ae1de304eabf9a9d (patch)
treeac1aba279007aec2c3abdb0189cd2beead1d473d /ext/json
parentd325e3ed706ec356c9439824ed82cbcdb4487859 (diff)
Fix `JSON.generate` `strict: true` mode to also restrict hash keys
Diffstat (limited to 'ext/json')
-rw-r--r--ext/json/generator/generator.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c
index af6ba16e3f..c71e2f28a7 100644
--- a/ext/json/generator/generator.c
+++ b/ext/json/generator/generator.c
@@ -1038,6 +1038,9 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
key_to_s = rb_sym2str(key);
break;
default:
+ if (data->state->strict) {
+ raise_generator_error(key, "%"PRIsVALUE" not allowed in JSON", rb_funcall(key, i_to_s, 0));
+ }
key_to_s = rb_convert_type(key, T_STRING, "String", "to_s");
break;
}