Javascript 从字符串声明对象

Javascript 从字符串声明对象,javascript,Javascript,我想声明一个javascript对象,它的属性是从前面创建的一个序列生成的 例如: var x='“property1”:“abc”, “属性2”:“定义”, “财产3”:“xyz”, '; var obj={ //在此处插入x的内容 }在此处使用JSON字符串 var x = `{"property1": "abc", "property2": "def", "property3": "xyz" }`; var obj = JSON.par

我想声明一个javascript对象,它的属性是从前面创建的一个序列生成的 例如:

var x='“property1”:“abc”,
“属性2”:“定义”,
“财产3”:“xyz”,
';
var obj={
//在此处插入x的内容
}
在此处使用JSON字符串

var x = `{"property1": "abc",
         "property2": "def",
         "property3": "xyz"
        }`;
var obj = JSON.parse(x)
在阅读了你的评论后,我想你可能在寻找括号符号

可以通过点表示法访问对象的属性

obj.prop = foo;
var v = obj.prop;
或者可以使用括号表示法

var propName = "prop"
obj[propName] = foo;
var v = obj[propName];
注意,这不是访问数组

所以你可以这样做

var data = [["property1", "abc"],["property2","def"],["property3","xyz"]]
var obj = {};
data.forEach(pk => { obj[pk[0]] = pk[1]; });
console.log(obj.property1); // output "abc"
在这里使用JSON字符串

var x = `{"property1": "abc",
         "property2": "def",
         "property3": "xyz"
        }`;
var obj = JSON.parse(x)
在阅读了你的评论后,我想你可能在寻找括号符号

可以通过点表示法访问对象的属性

obj.prop = foo;
var v = obj.prop;
或者可以使用括号表示法

var propName = "prop"
obj[propName] = foo;
var v = obj[propName];
注意,这不是访问数组

所以你可以这样做

var data = [["property1", "abc"],["property2","def"],["property3","xyz"]]
var obj = {};
data.forEach(pk => { obj[pk[0]] = pk[1]; });
console.log(obj.property1); // output "abc"
你可以申报

var x = {property1: "abc",
         property2: "def",
         property3: "xyz"};
var obj = {  
    data:x
}   
你可以申报

var x = {property1: "abc",
         property2: "def",
         property3: "xyz"};
var obj = {  
    data:x
}   

假设您有一个字符串,它是双引号的键/值对的有效序列,那么在删除任何尾随逗号(我注意到您的上一个属性有尾随逗号)后,您可以通过连接
'{'
'}'
,轻松地将其转换为JSON。然后,您可以通过解析该JSON来创建一个对象。因此:

var x = // Your string of quoted, comma-separated key/value pairs here

var obj = JSON.parse('{' + x.replace(/,\s+$/,'') + '}');

不赞成的一般注意事项:我不知道为什么要将属性创建为字符串,而不是直接将属性添加到对象中,并且通常不应该手动创建JSON,我想指出的是,用单引号括起来的字符串文字中不能有换行符,因此我希望您能以这种方式展示它,以便于阅读。

假设您有一个字符串,它是双引号的键/值对的有效序列,那么您可以通过连接
{/code>和
}轻松地将其转换为JSON“
,删除任何尾随逗号后(我注意到您的上一个属性有尾随逗号)。然后,您可以通过解析该JSON来创建一个对象。因此:

var x = // Your string of quoted, comma-separated key/value pairs here

var obj = JSON.parse('{' + x.replace(/,\s+$/,'') + '}');

不赞成的一般注意事项:我不知道为什么要将属性创建为字符串,而不是直接将属性添加到对象中,并且通常不应该手动创建JSON,我想指出的是,用单引号括起来的字符串文字不能有换行符,因此我希望您能以这种方式演示,以便于阅读。

您也可以使用
eval
API来解析字符串

见:

函数的作用是:计算表示为字符串的JavaScript代码

示例:

let y = "";
let x = ' "property1": "abc", "property2": "def", "property3": "xyz" ';
eval('y={' + x + '}');
输出:

let y = "";
let x = ' "property1": "abc", "property2": "def", "property3": "xyz" ';
eval('y={' + x + '}');

请注意,使用
eval
可能有危险,如其文档中所述:

eval()是一个危险的函数,它执行传递的代码 以调用方的权限。如果使用字符串运行eval() 这可能会受到恶意方的影响,您最终可能会运行 用户计算机上具有您的权限的恶意代码 网页/分机


示例:将其作为REST服务公开,以允许最终用户使用任何“对象字符串”攻击它,而该字符串可能是一段恶意代码,如下载病毒。

您也可以使用
eval
API解析该字符串

见:

函数的作用是:计算表示为字符串的JavaScript代码

示例:

let y = "";
let x = ' "property1": "abc", "property2": "def", "property3": "xyz" ';
eval('y={' + x + '}');
输出:

let y = "";
let x = ' "property1": "abc", "property2": "def", "property3": "xyz" ';
eval('y={' + x + '}');

请注意,使用
eval
可能有危险,如其文档中所述:

eval()是一个危险的函数,它执行传递的代码 以调用方的权限。如果使用字符串运行eval() 这可能会受到恶意方的影响,您最终可能会运行 用户计算机上具有您的权限的恶意代码 网页/分机


示例:将其作为REST服务公开,以允许最终用户使用任何“对象字符串”攻击它,而这可能是一段恶意代码,如下载病毒。

将字符串设置为JSON字符串并使用JSON.parse(str)将字符串设置为JSON字符串并使用JSON.parse(str)谢谢。对象的属性及其值是从循环中生成的,我不知道其他方法谢谢。对象的属性及其值是从循环中生成的,我不知道另一个way@sfblap在阅读了关于另一个答案的评论后,您可能会使用括号表示法。见更新answer@sfblap在阅读了关于另一个答案的评论后,您可能会使用括号表示法。请参见“应答更新”“x不是字符串,您将其作为对象文字”。@Blindman67我的错误是,我已更新示例代码以匹配OP的原始字符串。输出仍然是一样的。x不应该是字符串,而是作为对象文字。@Blindman67我的错误是,我更新了示例代码以匹配OP的原始字符串。输出仍然是一样的。