我正在使用Ruby与Sinatra和DataMapper。创建一个“获取”Web服务非常简单,该服务通过类似Item.all().to_json
的方式向UI提供数据集
但是,目的是让UI使用数据集进行crud工作并返回单个JSON对象以进行添加或更新。我还没有找到一个等效的“from_json”DataMapper函数来初始化一个Item对象。
作为解决方法,我正在使用JSON.parse,如下所示:
item_data = JSON.parse(request.body.read, :quirks_mode => true)
这有效,但是我必须创建一个新的DataMapper对象,即item = Item.new
,
并将item_data中的所有元素复制到item中,但我想认为这是一种更简单的方法。
欢迎提出任何建议。
答案 0 :(得分:1)
好像你有:
class Item
property :body, String
end
所以你可能想要这样做:
class Item
property :body, Json
end
Json样式属性,就像String一样,唯一的区别是在加载/存储时数据将通过JSON解析器。
答案 1 :(得分:0)
我遇到了同样的问题!
你可以像这样创建一个帮手:
helpers do
def json_params
begin
JSON.parse(request.body.read)
rescue
halt 400, { message:'Invalid JSON' }.to_json
end
end
end
创建Datamapper对象:
@object = Object.new(json_params)
@object.save