From: shishir127@... Date: 2015-04-29T16:59:32+00:00 Subject: [ruby-core:69022] [Ruby trunk - Bug #11059] When saving a hash to YAML or JSON the default value isn't stored Issue #11059 has been updated by Shishir Joshi. JSON is based on JavaScript and the JavaScript default value for hashes can't be changed. The YAML spec says These primitives were chosen because they are both powerful and familiar: the sequence corresponds to a Perl array and a Python list, the mapping corresponds to a Perl hash table and a Python dictionary. Python doesn't have a default value for dictionaries and I don't know Perl. It looks like the default value cannot be converted to YAML or JSON to maintain interoperability with other languages. ---------------------------------------- Bug #11059: When saving a hash to YAML or JSON the default value isn't stored https://bugs.ruby-lang.org/issues/11059#change-52278 * Author: Orosz Szilard * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [i686-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- I tried to serialize/save a hash to a YAML file, with YAML.dump. My hash has a default value set in. When I read the hash back with YAML.load, the default value is lost, because it wasn1t stored in the YAML file. I experienced the same issue using JSON. ~~~ require "yaml" hash={"a"=>0.3,"b"=>0.7} hash.default=1.0 File.write("hash.yaml",YAML.dump(hash)) hash2=YAML.load(File.read("hash.yaml")) puts hash2.default => nil ~~~ -- https://bugs.ruby-lang.org/