0

我从我的应用程序中获取以下格式的 JSON

{"list":[{"orderno":"02201308231133","itemno":"w01","name":"t01","amount":"120","status":"done"},{"orderno":"02201308231133","itemno":"w02","name":"t02","amount":"120","status":"done"},{"orderno":"02201308231133","itemno":"w03","name":"t03,"amount":"120","status":"done""}]}

现在我需要从上面的 JSON 中执行 2 个任务:首先在列表表中添加上面的行,第二个:在上述情况下从 orderno ie02 中提取前 2 位数字并使用状态更新另一个表(或调用另一个控制器)(完成)提取值 (02)。

我能够完成第一项任务。相同的控制器代码是:

def create
    lists = params[:list].collect{|list_attributes| List.new(list_attributes)}
    valid,not_valid = lists.partition{|list| list.valid?}

    if not_valid.blank?
      lists.map(&:save)
      @lists = lists
      format.html { redirect_to @list, notice: 'List was successfully created.' }
      format.json { render json: @list, status: :created, location: @list }
    else
      format.html { render action: "new" }
      format.json { render json: @list.errors, status: :unprocessable_entity }
    end
  end

上述方法在 DB 表中插入行。现在我无法弄清楚如何在列表控制器中调用 create 方法之前解析 JSON 以提取值。一旦我有了值,我需要调用两个表来更新。请指教。谢谢

4

1 回答 1

0

您可以安装'json'具有易于使用的方法来解析 JSON 数据的 gem(其文档位于https://github.com/flori/json)。

然后你可以阅读你的json:

JSON.parse(string)

这将为您提供一个字符串和哈希数组。您可以通过遍历此类数组来获取订单号的前两位数字,获取与:order键对应的值,然后获取前两位数字并将它们转换为整数,使用:

order_no[0,2].to_i
于 2013-08-23T06:44:03.997 回答