【发布时间】:2017-07-05 22:19:28
【问题描述】:
我正在尝试使用 node.js JSON.parse 从人口普查数据中提取单个行和特定数据。
const http = require('http');
function printStuff(statesInfo){
const statesPopulations = `${statesInfo} This is all states info`;
console.log(statesPopulations);
}
const request = http.get(`http://api.census.gov/data/2013/acs5?get=NAME,B01001_001E&for=state:*&key=4c2f7253819e5491c78ff2c5ed541fe95943854c`,
response => {
let body = "";
console.log('Status Code:', response.statusCode);
response.on('data', data=> {
body += data.toString();
});
response.on('end', () => {
const statePop = JSON.parse(body);
const statesInfo = JSON.parse(body);
printStuff(statesInfo);
})
});
使用 console.log(body) 结果显示为...
NAME,B01001_001E,state,Alabama,4799277,01,Alaska,720316,02,Arizona,6479703,04,Arkansas,2933369,05,California,37659181,06,Colorado,51 19329,08,Connecticut,3583561,09,Delaware.......
如果我使用console.dir(body),结果显示为....
[[姓名][B01001][状态] ['阿拉巴马','4799927','01'], ['阿拉斯加','720316','02']] ....
一直到波多黎各。我正在尝试提取特定的东西,但是我在 Treehouse 上使用的示例都设置得很好,很整洁,您可以使用 profile.badges.length 之类的好东西拉出专门标记的东西,但据我所知,没有这些东西都被贴上了标签。我想说的是,将弗吉尼亚州或特拉华州的信息撤出那里。
【问题讨论】:
-
在
response.on('data')函数中,data已经是有效的 JSON。当您调用data.toString()时,您正在破坏对象并将其变成字符串,因此您无法取出您想要的东西。只需按原样使用数据。 -- 编辑 -- 实际上,没关系.. 从该请求返回的数据以一种奇怪的、无用的方式格式化.. 很难得到你想要的。
标签: javascript json node.js parsing census