我正在尝试通过 JSON 将稍微复杂的 Rails 应用程序发送到 JS 脚本,以某种有趣的方式呈现页面。假设 Rails 中的数据是关于人和他们的资产的,看起来像这样:
[
{:name => 'Bill Smith', :state => 'KS'} => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
],
{:name => 'Bubba Jack', :state => 'FL'} => [
{:type => 'boat', :valuation => 12000}
]
]
在 JS 方面,我希望能够访问各个字段,但是,JS 不允许对象的键是对象,因此 data.to_json 将所有人员详细信息转换为一个字符串,如下所示:
[{"{:name=>\"Bill Smith\", :state=>\"KS\"}":[{"type":"house","valuation":150000},{"type":"car","valuation":10000}],"{:name=>\"Bubba Jack\", :state=>\"FL\"}":[{"type":"boat","valuation":12000}]}]
我不能做类似的事情
var people = Object.keys(data);
for(var i=0; i<people.length; i++) {
var totAsset = 0;
var person = people[i];
for(var j=0;j<data[person].length; j++) {
totAssset = totAsset + data[person][j].valuation
}
alert("got person named " +person.name+" having $"+totAsset);
}
在 AJAX 应用程序的 JS 端表示和使用复杂数据的“正确”方式是什么?
更新:所以 sgrif 和 Andrew 的答案都为这个特定问题提供了解决方案。我已经对他们两个都投了赞成票,但我会等待一些,看看是否有一个更普遍的想法,有人必须在接受之前将对象表示为键或具有该功能的东西。