javascript - 使用node.js解析多维人口普查数据

标签 javascript json node.js parsing census

我正在尝试使用 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),结果显示为......

[[NAME][B01001][state] ['Alabama', '4799927', '01'], [ 'Alaska', '720316', '02' ]] ....

一直到波多黎各。我正在尝试提取特定的东西,但我在 Treehouse 上使用的示例都设置得非常漂亮和整洁,您可以在其中使用像 profile.badges.length 这样的好东西提取特别标记的东西,但据我所知,没有这些东西都贴上了标签。我希望能够说,从那里或特拉华州提取弗吉尼亚州的信息。

最佳答案

您在 Treehouse 上看到的示例很可能使用带有键 {Alabama: {...}} 的对象,而不是您从 census.gov [[ “阿拉巴马州”,...]]

要访问加利福尼亚州的人口,您需要从父级获取第 6 个(索引 5,因为它从 0 开始)嵌套数组。看起来像这样:

获取加州数组 console.log(statePop[5]);//输出 ["California","37659181","06"]

通过获取 California 数组中的第二项来获取 California 的人口。 console.log(statePop[5][1]);//输出“37659181”

如果您想要一个更具人类可读性的版本(如 Treehouse 示例),您必须使用数组中的键创建一个对象。您可以使用类似 lodash 的方式轻松完成此操作或者像这样手动:

var popByState = {};
// loop through each state and assign values to object keyed by the state name
statePop.forEach(function(stateArr) {
  popByState[stateArr[0]] = {population: stateArr[1]};
  // Ex stateArr = ["California","37659181","06"]
  // stateArr[0] is the name of the state
  // stateArr[1] is the population
});
console.log(popByState.California.population) // outputs "37659181";

但是您必须注意名称中有空格的州​​,例如“纽约”。您不能使用点符号来访问这些 (console.log(popByState.New York.population)),您必须使用方括号 console.log(popByState['New York'].人口)

关于javascript - 使用node.js解析多维人口普查数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280149/

相关文章:

json - 如何在 Flutter 中转换 json 空数组?

android - 如何将图像文件添加到 json 对象中?

javascript - 有没有办法将 ReadableStream<Uint8Array> 通过管道传输到 NextApiResponse?

mysql - 如何使用 Node.js 和 Sequelize 设置基于角色的身份验证 API?

javascript - 使用枚举作为类型/接口(interface)

javascript - 在图像上悬停显示 div 并在鼠标移出时隐藏 div

javascript - 是否可以在 javascript 中克隆具有相同功能的 javascript div id?

c# - 如何将 Json 嵌套属性获取到主要属性

node.js - babel-preset-react-app 没有获取环境变量

javascript - ES6中如何从父类访问子类?