更新了问题,相关位置包含完整代码:
var app=express()
app.get('/api/imagesearch/:topic',function(req,res){
var topic=req.params.topic
var offset=req.query.offset
var opts = {
host: 'www.googleapis.com',
path: '/myapi'
// The result of calling this URL below
};
https.get(opts,function(resp){
resp.pipe(bl(function(err,data){
if(err) throw err
// data is a buffer
var myString=data.toString() // string
var myData=JSON.parse(data.toString()) // object
var myArray=myData.items // array
var result=[]
myArray.forEach(function(element){
result.push({"url":element.pagemap.cse_image[0].src,
"snippet":element.snippet,
"thumbnail":element.pagemap.cse_thumbnail[0].src,
"context":element.link})
})
res.end(JSON.stringify(result))
}))
})
})
调用网址https://www.googleapis.com/myapi
的结果var myData={"items":[
{
"snippet": "string",
"link": "string",
"pagemap": {
"cse_image":[{
"src":"value" }],
"cse_thumbnail":[{
"src":"value"}]
}
},
{
"snippet": "string",
"link": "string",
"pagemap": {
"cse_image":[{
"src":"value" }],
"cse_thumbnail":[{
"src":"value"}]
}
},...]}
请求是:
https://www.myweb.com/api/imagesearch/cat?offset=1
关键是myArray.forEach(element.snippet,element.link,element.pagemap)中第一个键的调用正确返回所需的数组。 调用嵌套键时的问题:element.pagemap.cse_image,element.pagemap.cse_thumbnail返回TypeError:无法读取属性' cse_image'未定义的
答案 0 :(得分:0)
您不需要使用JSON.parse()
。 myData
已经是JSON对象而不是String。
Array.each()
不是标准的JS函数。请改用forEach()
。你在使用图书馆吗?
更新:我已为您创建了以下JsFiddle。检查控制台输出。