Javascript 如何在解析前检查字符串是否为数组?
我有一个任意字符串,我想在解析之前测试它是否为数组格式。以下是我的字符串的外观:Javascript 如何在解析前检查字符串是否为数组?,javascript,arrays,json,string,eval,Javascript,Arrays,Json,String,Eval,我有一个任意字符串,我想在解析之前测试它是否为数组格式。以下是我的字符串的外观: var stringVar = "[{id:123,abc:123,xyz:987},{id:456,abc:789,xyz:1}]" 要将其解析为数组,我将执行以下操作: var arrayVar = eval(stringVar); 我担心恶意代码,所以在对其运行eval之前,我想检查stringVar是否是预期的数组。有什么办法吗?考虑将该字符串转换为正确的JSON语法(在键名和字符串值周围加引号),然后
var stringVar = "[{id:123,abc:123,xyz:987},{id:456,abc:789,xyz:1}]"
要将其解析为数组,我将执行以下操作:
var arrayVar = eval(stringVar);
我担心恶意代码,所以在对其运行
eval
之前,我想检查stringVar
是否是预期的数组。有什么办法吗?考虑将该字符串转换为正确的JSON语法(在键名和字符串值周围加引号),然后改用JSON.parse()
。该字符串来自另一个系统,因此我无法控制更改它。我怎样才能在不进行疯狂的字符串操作的情况下获取该字符串并将其转换为正确的JSON呢?那么,在这种情况下,您可以使用这个难看的正则表达式:if(yourString.match(/^\[(((id | abc | xyz)\:\d+,((id | abc | xyz)\:{0,}>)(((id | abc | xyz xyz)\:{d+):{d+):{。。但是它很难假设字符串中给出的键名。请欣赏这些想法,但是,参数也是任意的,因此abc
可以是foo
,其他时候可能是bar
,等等。不明白这一点。您的stringVar
不是字符串,它只是一个数组对象。您不需要对其进行求值、分析或其他任何操作。你的意思是说stringVar=“[…]”
?