【问题标题】:How to initialize Ruby Datamapper object from JSON?如何从 JSON 初始化 Ruby Datamapper 对象?
【发布时间】:2013-12-06 01:02:44
【问题描述】:

我将 Ruby 与 Sinatra 和 DataMapper 一起使用。创建一个“获取”网络服务非常简单,该服务将数据集传递给 UI,类似于 Item.all().to_json 但是,其目的是让 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,但我想有一种更简单的方法。

欢迎提出任何建议。

【问题讨论】:

    标签: ruby json datamapper


    【解决方案1】:

    看来你有:

    class Item
       property :body, String
    end
    

    所以你可能想这样做:

    class Item
       property :body, Json
    end
    

    Json 风格的属性,就像 String 一样,唯一的区别是在加载/存储时数据将通过 JSON 解析器。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题!

      你可以像这样创建一个助手:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        相关资源
        最近更新 更多