class JSON::Coder
JSON::Coder 包含一个解析器和生成器配置。
module MyApp JSONC_CODER = JSON::Coder.new( allow_trailing_comma: true ) end MyApp::JSONC_CODER.load(document)
Public Class Methods
Source
# File ext/json/lib/json/common.rb, line 1058 def initialize(options = nil, &as_json) if options.nil? options = { strict: true } else options = options.dup options[:strict] = true end options[:as_json] = as_json if as_json @state = State.new(options).freeze @parser_config = Ext::Parser::Config.new(ParserOptions.prepare(options)).freeze end
参数 options,如果给出,包含一个用于解析和生成的选项哈希。请参阅 解析选项 和 生成选项。
对于生成,strict: true 选项始终设置为。当遇到没有原生 JSON 对应物的 Ruby 对象时,将调用初始化方法提供的块,并且该块必须返回一个具有原生 JSON 对应物的 Ruby 对象。
module MyApp API_JSON_CODER = JSON::Coder.new do |object| case object when Time object.iso8601(3) else object # Unknown type, will raise end end end puts MyApp::API_JSON_CODER.dump(Time.now.utc) # => "2025-01-21T08:41:44.286Z"
Public Instance Methods
Source
# File ext/json/lib/json/common.rb, line 1076 def dump(object, io = nil) @state.generate(object, io) end
将给定的对象序列化为 JSON 文档。
也别名为:generate
Source
# File ext/json/lib/json/common.rb, line 1085 def load(source) @parser_config.parse(source) end
解析给定的 JSON 文档并返回一个等效的 Ruby 对象。
也别名为:parse
Source
# File ext/json/lib/json/common.rb, line 1094 def load_file(path) load(File.read(path, encoding: Encoding::UTF_8)) end
解析给定的 JSON 文档并返回一个等效的 Ruby 对象。