获取一些服务器,我得到一个GET请求作为响应之后:解析JavaScript代码为响应
variable1 = ["something", ["a","b","c"], ["more stuff"]]
我需要提取variable1[1]
阵列["a","b","c"]
在我的js代码中使用。
(我用的的NodeJS的要求 - 这是一个服务器端的请求,这是我无法控制的外部Web服务)
获取一些服务器,我得到一个GET请求作为响应之后:解析JavaScript代码为响应
variable1 = ["something", ["a","b","c"], ["more stuff"]]
我需要提取variable1[1]
阵列["a","b","c"]
在我的js代码中使用。
(我用的的NodeJS的要求 - 这是一个服务器端的请求,这是我无法控制的外部Web服务)
我假设你的返回值是包含完整表达一个字符串。
假设你有这样的一个字符串:
'variable1 = ["something", ["a","b","c"], ["more stuff"]]'
,并要恢复variable1[1]
含义:["a","b","c"]
您可以通过=
分割字符串,然后用JSON.parse()
解析它,随后通过查询它对于期望的索引[1]
如下所示:
var x = 'variable1 = ["something", ["a","b","c"], ["more stuff"]]';
var y = JSON.parse(x.split('=')[1])[1];
console.log(y);
正如你已经接受了答案,我将离开下面的解决方案 中,但会建议以上。
你也可以创建一个新的功能,并返回表达式的结果,与此类似:
var x = 'variable1 = ["something", ["a","b","c"], ["more stuff"]]';
var y = new Function('return ' + x);
然后,您可以返回你想要什么相似获得variable1[1]
警告
New Function()
呈现可能与eval()
相同的风险,特别是如果检索expressi如果您无法控制来自第三方服务的JSON字符串中的内容,您是否可能会在不知情的情况下执行恶意代码?
var x = 'variable1 = ["something", ["a","b","c"], ["more stuff"]]';
console.log(new Function('return ' + x)()[1]);
如果您想获得该表达式的值的一个更安全的方式,考虑对第一=
然后在表达做JSON.parse
分裂的结果。
const input = 'variable1 = ["something", ["a","b","c"], ["more stuff"]]';
const expression = input
// Split the string on the equals sign
.split('=')
// Gather the pieces after the first one (just in case there's a "=" in the array)
.slice(1)
// Put it back together into a single string
.join('');
// Convert the string to an actual array
const output = JSON.parse(expression);
console.log(output);
这种方法完全避免了Function
,eval
,和相关方法的安全问题。
很酷。你有什么尝试?你卡在哪里?你熟悉'JSON.parse'和'String.prototype.split'吗? –
什么?我不明白... – Ionut
我认为这应该是JSON ...所以如果是这样,请阅读如何使用它。 – CBroe