Ruby(Sinatra)JSON.parse不适用于json数据

时间:2013-03-12 21:51:47

标签: ruby json knockout.js sinatra

我正在使用ko.toJSON

从knockout.js中找到json对象
self.cmaterials = ko.observableArray([]);

...

    ko.computed(function() {
    $.ajax({
         url: "/editcmat1",
         type: "PUT",
         data: ko.toJSON(
            self.cmaterials
         )
     });
});

Ruby代码

puts params
  

{ “ID”:34, “名称”: “混凝土”, “material_id”:3}

当我尝试转换它时

puts JSON.parse(js)
  

TypeError - 无法将Hash转换为String:

如何使其成为可用的Ruby哈希。

puts parse.keys
  {"id":34,"name":"Concrete","material_id":3}

1 个答案:

答案 0 :(得分:0)

要执行您尝试对代码执行的操作,您可以执行以下操作:

 puts JSON.parse(js).to_s

使用JSON.parse方法使其成为可用的哈希值。您正尝试使用puts输出该哈希值,这意味着您必须将其转换为字符串。如果您想访问该哈希,请执行以下操作:

hash = JSON.parse(js)
puts hash["id"] #34
puts hash["name"] #concrete
etc...