我有一个json响应,里面有一个函数调用。解析后它看起来像字符串
"foo({a: 5}, 5, 100)"
如何提取函数调用的第一个参数(在本例中为{a: 5}
)?.
更新
以下是服务器端的代码
var request = require('request')
, cheerio = require('cheerio');
var url = 'http://www.google.com/dictionary/json?callback=dict_api.callbacks.id100&q=test&sl=en&tl=en';
request({url: url, 'json': true}, function(error, resp, body){
console.log(typeof JSON.parse(body)); // => string
});
答案 0 :(得分:2)
foo({a: 5}, 5, 100);
function foo(){
var the_bit_you_want = arguments[0];
console.log(the_bit_you_want);
}
答案 1 :(得分:2)
这很简单,在你的foo函数中使用以下内容:
arguments[0];
答案 2 :(得分:2)
Google Dictionary API(未记录)使用JSONP,它实际上不是JSON,因此您无法以您希望的方式在node.js中使用它(正如您在评论中所述)。您必须eval()
回复。
请注意查询参数如何callback=dict_api.callbacks.id100
?这意味着返回的数据将按如下方式返回:dict_api.callbacks.id100(/* json here */, 200, null)
所以,你有两个选择:1:在你的代码中创建一个函数:
var dict_api = { callbacks: { id100: function (json_data) {
console.log(json_data);
}};
request({url: url, 'json': true}, function(error, resp, body){
// this is actually really unsafe. I don't recommend it, but it'll get the job done
eval(body);
});
或者,您可以开始(dict_api.callbacks.id100(
)并结束(,200,null)
[假设这将始终相同]),然后JSON.parse()
生成的字符串。
request({url: url, 'json': true}, function(error, resp, body){
// this is actually really unsafe. I don't recommend it, but it'll get the job done
var json_string = body.replace('dict_api.callbacks.id100(', '').replace(',200,null)', '');
console.log(JSON.parse(json_string));
});