0

我有一个如下的 JSON 字符串:{firstname: "foo", lastname: "bar", message: "I'm fubar" } 并希望将每个值分配给一个与其相应键完全相同的变量:

我应该得到一个var firstname或对象obj.firstname来分配值“foo”,等等......

项目列表显然应该扩展,所以我不想硬编码键/变量名称来分配每个值。

完成这个非常简单的任务的好方法是什么?

是否存在一种 getElementById 类型的解决方案来为 key 标识的变量分配其各自的值?

这就是我正在尝试的,带有一些伪代码:

var firstname = "";
var lastname = "";
// etc...
var data = JSON.parse({firstname: "foo", lastname: "bar", message: "I'm fubar", age: "etc..."});

    for (var key in data) {

        ("the variable currently identified by the value of key").val(data[key]);
        // or any other way of assigning "foo" to firstname

        console.log("firstname: " + firstname + ", lastname: " + lastname);
    }

然后打印

firstname: foo, lastname: bar
4

3 回答 3

2

实际上,如果您在顶级范围内运行代码,则您正在将变量分配给窗口对象。

for (var key in data) {
    this[key] = data[key]; // Equivalent to window[key] here
}
于 2013-04-08T13:08:32.147 回答
1

如果要将其分配给具有这些值作为属性的对象,只需使用以下命令:

var obj = {firstname: "foo", lastname: "bar", message: "I'm fubar", age: "etc..."};

由于 JSON 是JavaScript Object NotationJavaScript 能够将此类数据解释为 JavaScript 对象。这允许您以某种方式访问​​属性obj.firstname等。

于 2013-04-08T13:05:57.670 回答
1

您必须定义要“提取”密钥的范围。在这种情况下,您似乎可能想要引用全局范围:

for (var key in data) {
    window[key] = data[key];
}
于 2013-04-08T13:06:39.600 回答