如何将此实例变量转换为JavaScript对象数组
我知道我有一些与
有关的事情但是当我尝试的时候。它只是完全错误..
这就是我得到的:(随行情推出)
@updates = [
"{'24548_0_load_results': ['1630609','2015-04-07 13:51:03 UTC','7 minutes']}",
"{'24548_0_load_results': ['1630610','2015-04-07 13:51:03 UTC','7 minutes']}"
]
用以下方法创建了上述内容:
@updates = []
records.each do |r|
updates << "{ '" + t.search_table_id.to_s + "': " + Search.load_post_result(r, s).to_s + " }"
end
这就是我需要的方式:
var obj1 = {
"loads": [
{'24547_1428357240_load_results' : ['1630607','2015-04-06 18:35:46 UTC','8 minutes']},
{'24547_1428357240_load_results' : ['1630606','2015-04-06 18:35:47 UTC','8 minutes']}
]
};
这是我通过以下方式运行此对象数组的脚本:
$.each(obj1["loads"], function(k, v){
$.each(v, function(key, value) {
alert(key + ": " + value);
})
});
编辑: 这就是我现在所拥有的
var obj1 = {
"loads": []
};
for (string in <%= @updates1 %>){
obj1["loads"].push(JSON.parse(string.replace(/'/g,'\"')));
}
$.each(obj1["loads"], function(k, v){
$.each(v, function(key, value) {
alert(key + ": " + value);
})
});
在回复中看起来像这样:
var obj1 = {
"loads": []
};
for (string in ["{ '24549_1428420484_load_results': ['1630610','2015-04-07 14:44:37 UTC','44 minutes','Springfield, MO','Dallas, TX','04/07','04/07','Full','Flatbed or Van or Reefer','','53','0.00'] }", "{ '24549_1428420484_load_results': ['1630609','2015-04-07 13:51:03 UTC','about 2 hours','Springfield, MO','Dallas, TX','04/10','04/11','Full','Flatbed or Van or Reefer','','53','0.00'] }"]){
obj1["loads"].push(JSON.parse(string.replace(/'/g,'\"')));
}
$.each(obj1["loads"], function(k, v){
$.each(v, function(key, value) {
alert(key + ": " + value);
})
})
答案 0 :(得分:1)
你可以在这样的javascript中完成:
JSON.parse("YourString".replace(/'/g,'\"'))
这是一个小提琴演示。
https://jsfiddle.net/ab19ha1o/
您需要替换单引号才能正确解析JSON,因此这是一种快速而又脏的方法:)
编辑:这是JSON Parse上的SO线程:jQuery.parseJSON single quote vs double quote
你只需要迭代每个字符串来获取对象。
编辑:完整转移看起来像这样:
for (string in updates){
obj1["loads"].push(JSON.parse(string.replace(/'/g,'\"')));
}