From: "Hanmac (Hans Mackowiak)" Date: 2021-09-14T13:47:15+00:00 Subject: [ruby-core:105251] [Ruby master Bug#18167] JSON.load doesn't symbolize names Issue #18167 has been updated by Hanmac (Hans Mackowiak). The Problem lies in the documentation of the load method: `` JSON.load(source, proc = nil, options = {}) -> object `` because it isn't coded for newer ruby using `**options` there, for you to make it work you need: `JSON.load( source, null, symbolize_names: true )` ---------------------------------------- Bug #18167: JSON.load doesn't symbolize names https://bugs.ruby-lang.org/issues/18167#change-93659 * Author: yann.gouverneur (Yann Gouverneur) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- As per the documentation the JSON#load method should accept _**and use**_ the same parsing options as the JSON#parse one. Obviously this is not the case: ``` $ ./json_parse_vs_load.rb JSON.load, no symbolize => OK {"a"=>1, "b"=>2} JSON.load, symbolize => KO: keys are not symbols {"a"=>1, "b"=>2} JSON.load, no symbolize => OK {"a"=>1, "b"=>2} JSON.load, do symbolize => OK {:a=>1, :b=>2} ``` Either the behavior with parsing options is different between these two methods and the documentation should be updated accordingly or there's a bug in the JSON#load method. Expecting to have either the documentation updated or the incorrect behavior fixed. ---Files-------------------------------- json_parse_vs_load.rb (669 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: