From: "jeremyevans0 (Jeremy Evans)" Date: 2021-09-14T21:46:54+00:00 Subject: [ruby-core:105255] [Ruby master Bug#18167] JSON.load doesn't symbolize names Issue #18167 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed @Hanmac is correct. I think you also need to manually set `create_additions: false`, otherwise, an ArgumentError is raised: ```ruby JSON.load(%( {"a": 1, "b": 2} ), nil, symbolize_names: true, create_additions: false) # => {:a=>1, :b=>2} ``` As this isn't a bug, I'm going to close this now. If you would like the `JSON.load` API changed from an options hash to keywords, you should probably file a pull request upstream: https://github.com/flori/json/pulls ---------------------------------------- Bug #18167: JSON.load doesn't symbolize names https://bugs.ruby-lang.org/issues/18167#change-93665 * Author: yann.gouverneur (Yann Gouverneur) * Status: Closed * 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: