JavaScript关联数组 - 将字符串作为数组键传递:值对

时间:2012-03-06 02:52:02

标签: javascript string key associative-array

我知道我可以像这样创建一个关联数组:

var MyAssocArray = {'sky':'blue', 'grass':'green'};

我非常喜欢使用这种方法。

我想做什么,遇到麻烦的是:

我保存了这样的字符串:

var MyString = "'sky':'blue', 'grass':'green'";

我希望现在能够做到这一点:

var MyAssocArray = {MyString};

当我尝试时 - 我收到此错误:

invalid object initializer

我做错了什么? 我怎样才能做到这一点? 任何帮助将不胜感激


使用PHP和Javascript找到不同的解决方案。关联数组字符串在javascript

中回显
var Multidimensional_Arr[Multidimensional_Array_Key_Name] = {<?php echo $String_Pulled_From_Database; ?>}; // i.e. 'sky':'blue', 'grass':'green'

//Same can be done for single dimension array
var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}; // i.e. 'sky':'blue', 'grass':'green'

我希望它对某人有帮助

3 个答案:

答案 0 :(得分:4)

使用JSON - 它是序列化的Javascript Object Notation,非常接近你正在做的事情。

你需要做

var MyAssocArray = JSON.parse(MyString);

此外,JSON使用双引号,而不是单引号;如果您使用简单对象,您可以编写代码,只需在字符串中用'替换",但如果字符串包含双引号则很棘手。

编辑:如果您使用的浏览器没有实现JSON.parse(),您可以使用JSON网站上的实现(请参阅links at bottom of this page),或者如果您使用的是jQuery,那么{ {3}}


编辑#2:警告:除非您确定数据库中的数据已经过清理,否则您的解决方案存在安全风险:

 var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}

这相当于对eval()的调用;如果您的数据库字符串有任何恶意代码,它可以做坏事。这就是为什么发明JSON的一个原因 - 在评估之前很容易确保其内容有效(因此是安全的)。

您提供给我们的整体架构是[数据库中的数据] - &gt;服务器端PHP - &gt;客户端Javascript。这是序列化数据的典型示例。我意识到你可能有限制让你的系统不间断地运行,但严格的序列化格式会让你的系统更安全。

答案 1 :(得分:0)

如果您确定数据是安全的,那么您可以这样做:

var MyAssocArray = eval('{' + MyString + '}');

答案 2 :(得分:-1)

你不能这样做。

要实现您想要的功能,请使用split()函数将字符串首先拆分为逗号分隔的标记。然后,每个令牌应进一步由&#39;:&#39;字符。 然后将最后一次拆分获得的两个标记作为关联数组的键和值。