Ruby JSON.parse选项create_additions的示例?

Ruby JSON.parse选项create_additions的示例?,json,ruby,Json,Ruby,我正在为Ruby的类开发一些文档增强和示例代码片段。我对以下选择感到困惑: create_additions:如果设置为false,则即使找到匹配的类和::create_id,解析器也不会创建添加。此选项默认为false 是否有人可以提供使用此功能的示例代码?请考虑以下问题: require 'json' class Range def to_json(*a) { 'json_class' => self.class.name, 'data' =&

我正在为Ruby的类开发一些文档增强和示例代码片段。我对以下选择感到困惑:

create_additions:如果设置为false,则即使找到匹配的类和
::create_id
,解析器也不会创建添加。此选项默认为false

是否有人可以提供使用此功能的示例代码?

请考虑以下问题:

require 'json'

class Range
def to_json(*a)
  {
    'json_class'   => self.class.name,
    'data'         => [ first, last, exclude_end? ]
  }.to_json(*a)
end

def self.json_create(o)
  new(*o['data'])
end
end

foo = 1 .. 2
生成JSON:

JSON.generate(foo)                              # => "{\"json_class\":\"Range\",\"data\":[1,2,false]}"
JSON.generate(foo, { create_additions: false }) # => "{\"json_class\":\"Range\",\"data\":[1,2,false]}"
JSON.generate(foo, { create_additions: true })  # => "{\"json_class\":\"Range\",\"data\":[1,2,false]}"
解析生成的JSON:

JSON.parse( JSON.generate(foo)                              ) # => {"json_class"=>"Range", "data"=>[1, 2, false]}
JSON.parse( JSON.generate(foo), { create_additions: false } ) # => {"json_class"=>"Range", "data"=>[1, 2, false]}
JSON.parse( JSON.generate(foo), { create_additions: true  } ) # => 1..2
“”演示了JSON中影响
create\u additions
的潜在错误。从这里开始,这是一件简单的事情,只是一些测试切换状态结果的行


他们为什么要关闭安全漏洞,这需要您研究,因为它涉及到JSON序列化数据的规范,并且它是一种数据交换标准,JSON文档中的一个示例需要涵盖这一点。

文档中有一个示例:

在这方面,
parse
load
之间的主要区别在于前者默认不创建添加,后者默认这样做

Ruby对象的扩展呈现和加载 提供可选的附加功能,允许对Ruby进行序列化和反序列化 没有失去他们的类型的类

# without additions
require "json"
json = JSON.generate({range: 1..3, regex: /test/})
# => '{"range":"1..3","regex":"(?-mix:test)"}'
JSON.parse(json)
# => {"range"=>"1..3", "regex"=>"(?-mix:test)"}

# with additions
require "json/add/range"
require "json/add/regexp"
json = JSON.generate({range: 1..3, regex: /test/})
# => '{"range":{"json_class":"Range","a":[1,3,false]},"regex":{"json_class":"Regexp","o":0,"s":"test"}}'
JSON.parse(json)
# => {"range"=>{"json_class"=>"Range", "a"=>[1, 3, false]}, "regex"=>{"json_class"=>"Regexp", "o"=>0, "s"=>"test"}}
JSON.load(json)
# => {"range"=>1..3, "regex"=>/test/} 
有关详细信息,请参见#加载


欢迎来到SO。事实上,搜索和研究的方法是这样的,然后当你精疲力竭时,问一个具体的问题,详细说明你在哪里搜索以及为什么那些没有帮助,换句话说,告诉我们你在解决这个问题上付出了什么努力。你要求我们写一篇教程,但我们不知道你是否做了尽职调查。请参阅“”及其所有链接页面。如果您正在努力增强文档,那么JSON维护人员将是一个很好的来源。可能也有帮助,因为它实现了YAML,JSON就是其中的一个子集。我只做了部分工作:在代码、文档和web中搜索和研究,但没有这样说。我几乎什么也没找到。我想我要的是代码片段,不是教程。我没有看,但现在给我希望的地方是模块的test/和spec/中。快速搜索“ruby+json+create_additions”会很有用。谢谢@The Tin Man。这正是我需要的。Tin Man,为了让你了解我在做什么,你可以看到我基本上重写了Ruby ENV的文档:--我使用常规对象的另一个例子: