2017-12-03 192 views
0

我正在使用google trends API最终将趋势数据导出到excel文件。问题是我只想提取关键字的格式化时间和值。如何抓取JavaScript中的键值对 - Google Trends API

JS不是我的强项。我如何只拉这些参数?或者有没有办法将这些参数分配给键值字典对?

谢谢。

JSON输出

{ 
    "default": { 
    "timelineData":[ 
     { 
     "time":"1511629200", 
     "formattedTime":"Nov 25, 2017 at 12:00 PM", 
     "formattedAxisTime":"Nov 25 at 12:00 PM", 
     "value":[44], 
     "formattedValue":["44"] 
     }, 
     { 
     "time":"1511632800", 
     "formattedTime":"Nov 25, 2017 at 1:00 PM", 
     "formattedAxisTime":"Nov 25 at 1:00 PM", 
     "value":[41], 
     "formattedValue":["41"] 
     } 
    ] 
    } 
} 

代码

'use strict'; 

const googleTrends = require('google-trends-api'); 


var animals = ['hamsters', 'puppies']; 


for (var key in animals) { 

    console.log(animals[key]); 

    googleTrends.interestOverTime({ 
     keyword: key, 
     startTime: new Date(Date.now() - (167.9 * 60 * 60 * 1000)), 
     granularTimeResolution: true, 
    }, function(err, results) { 

     if (err) 
      console.log('oh no error!', err); 
     else 
      console.log(results); 
     console.log("--------------------------") 
    }); 
} 
+0

你的JSON对象还具有一个错误的额外'}' – Alan

回答

0

这可能让您开始提取你想要什么:

theStuffIWant = []; 

for (each of output.default.timelineData) { 
    theStuffIWant.push({time: each.formattedTime, value: each.value[0]}); 
} 

console.log(theStuffIWant); 

// now you should have an array of the data you want. 

注意,值看起来像他们在具有一个值的数组,因此需要使用[0]索引。还要注意,变量output应该替换为任何包含您的JSON数据的变量。

+0

获取“类型错误:无法读取未定义的属性“默认”。 – Phum

1

提取所需的数据转换成一个目的是遵循以功能性方式一键/值对图案与存在检查:

function extractTimeAndValue(data) { 
    var timelineData = (data && data.default && data.default.timelineData) || []; 

    return timelineData.reduce(function(timeAndValueObject, timeline) { 
    var time = timeline.formattedTime; 
    var value = timeline.value; 

    return Object.assign(
    {}, 
    timeAndValueObject, 
    time && value ? {[time]: value} : {} 
    ); 
    }, {}); 
} 
相关问题