我想做这样的事情:
require 'json'
class Person
attr_accessor :fname, :lname
end
p = Person.new
p.fname = "Mike"
p.lname = "Smith"
p.to_json
Run Code Online (Sandbox Code Playgroud)
可能吗?
david4dev对这个问题的回答声称有三种等效方法可以使用该json库将对象转换为JSON字符串:
JSON.dump(object)
JSON.generate(object)
object.to_json
Run Code Online (Sandbox Code Playgroud)
以及两种将JSON字符串转换为对象的等效方法:
JSON.load(string)
JSON.parse(string)
Run Code Online (Sandbox Code Playgroud)
但是看一下源代码,它们中的每一个似乎都差别很大,并且它们之间存在一些差异(例如,1).
他们之间有什么不同?什么时候用哪个?
可能重复:
在Rails 2.3.5中覆盖to_json
LIB/responses.rb
module Responses
class Response
def to_json
JSON.pretty_generate(self)
end
end
class ErrorResponse < Response
def initialize(cause)
self[:type]="Error"
self[:casue]=cause
end
end
class DataResponse < Response
attr_accessor :data
end
end
Run Code Online (Sandbox Code Playgroud)
这由控制器使用:
response=Responses::DataResponse.new
response.data=someData
render :json => response
Run Code Online (Sandbox Code Playgroud)
现在,我得到一个错误wrong number of arguments (1 for 0)在lib/responses.rb:3:in to_json.为什么?没有参数传递给to_json隐式调用的render :json.那我的错误在哪里?