异步-使用node.js遍历JSON

我有一个需要迭代的JSON文件,如下所示...

{

"device_id": "8020",

"data": [{

"Timestamp": "04-29-11 05:22:39 pm",

"Start_Value": 0.02,

"Abstract": 18.60,

"Editor": 65.20

}, {

"Timestamp": "04-29-11 04:22:39 pm",

"End_Value": 22.22,

"Text": 8.65,

"Common": 1.10,

"Editable": "true",

"Insert": 6.0

}]

}

数据中的键并不总是相同的(我只是使用示例,有20个不同的键),因此,我无法设置脚本来静态引用它们以获取值。

否则我可以说

var value1 = json.data.Timestamp;

var value2 = json.data.Start_Value;

var value3 = json.data.Abstract;

etc

过去我在数据节点上使用了一个简单的foreach循环...

foreach ($json->data as $key => $val) {

switch($key) {

case 'Timestamp':

//do this;

case: 'Start_Value':

//do this

}

}

但是不想阻止脚本。 有任何想法吗?

9个解决方案

80 votes

您可以通过以下方式遍历JavaScript对象:

for(var attributename in myobject){

console.log(attributename+": "+myobject[attributename]);

}

myobject可能是您的json.data

Van Coding answered 2020-06-17T18:21:59Z

22 votes

您可能还需要在循环中使用hasOwnProperty。

for (var prop in obj) {

if (obj.hasOwnProperty(prop)) {

switch (prop) {

// obj[prop] has the value

}

}

}

node.js是单线程的,这意味着您的脚本将阻止,无论您是否想要它。 还记得V8(node.js使用的Google的Javascript引擎)将Javascript编译为机器代码,这意味着大多数基本操作确实非常快,并且通过具有100个键的对象循环可能需要几纳秒的时间?

但是,如果您在循环中进行了更多操作而又不想立即阻止它,则可以执行以下操作

switch (prop) {

case 'Timestamp':

setTimeout(function() { ... }, 5);

break;

case 'Start_Value':

setTimeout(function() { ... }, 10);

break;

}

如果循环正在执行一些非常占用CPU的工作,则需要生成一个子进程来完成该工作或使用Web Worker。

mak answered 2020-06-17T18:22:33Z

18 votes

我建议利用nodeJS始终为ES5的事实。 请记住,这不是您可以依赖该语言的实现稳定的浏览器人员。 那就是说,我建议不要在nodeJS中使用for-in循环,除非您真的想对原型链进行深度递归。 对于简单的传统循环,我建议在ES5中充分利用Object.keys方法。 如果您查看以下JSPerf测试,尤其是使用Chrome(因为它与nodeJS具有相同的引擎),则会大致了解到,使用此方法比使用for-in循环的性能要高出大约10倍。 快点)。 这是代码示例:

var keys = Object.keys( obj );

for( var i = 0,length = keys.length; i < length; i++ ) {

obj[ keys[ i ] ];

}

Nathan Sweet answered 2020-06-17T18:22:54Z

6 votes

如果要避免阻塞(这仅是非常大的循环所必需的),则将循环的内容包装在一个名为process.nextTick(function(){})的函数中,该函数会将执行推迟到下一个刻度,从而有机会进行来自其他异步的挂起调用 要处理的功能。

Mike Scott answered 2020-06-17T18:23:15Z

3 votes

如果使用的是nodeJS,则一定要利用它提供的不同库。 诸如each(),map(),reduce()之类的内置函数以及来自underscoreJS的更多函数都减少了我们的工作量。 这是一个样本

var _=require("underscore");

var fs=require("fs");

var jsonObject=JSON.parse(fs.readFileSync('YourJson.json', 'utf8'));

_.map( jsonObject, function(content) {

_.map(content,function(data){

if(data.Timestamp)

console.log(data.Timestamp)

})

})

Nish answered 2020-06-17T18:23:35Z

2 votes

不确定是否有帮助,但似乎托管在此处的节点中可能有一个用于异步迭代的库:

[HTTPS://GitHub.com/操烂/A sync]

异步是一个实用程序模块,它提供直接,强大的功能来使用异步JavaScript。 尽管最初是设计用于node.js的,但也可以直接在浏览器中使用。

异步提供了大约20个功能,其中包括通常的“功能”可疑对象(映射,缩小,过滤,forEach…)以及异步控制流的一些常见模式(并行,串行,瀑布…)。 所有这些功能都假定您遵循提供单个回调作为async函数的最后一个参数的node.js约定。

JWally answered 2020-06-17T18:24:09Z

1 votes

看一下Traverse。 它将为您递归遍历一个对象树,并且在每个节点上您都可以访问许多不同的对象-当前节点的键,当前节点的值,当前节点的父级,当前节点的完整键路径等。[https 我已经使用它对要清理循环引用的对象以及在转换各种数据位时需要进行深层克隆的对象产生了很好的效果。 这是从其样本中提取的一些代码,以使您了解其功能。

var id = 54;

var callbacks = {};

var obj = { moo : function () {}, foo : [2,3,4, function () {}] };

var scrubbed = traverse(obj).map(function (x) {

if (typeof x === 'function') {

callbacks[id] = { id : id, f : x, path : this.path };

this.update('[Function]');

id++;

}

});

console.dir(scrubbed);

console.dir(callbacks);

AlexGad answered 2020-06-17T18:24:30Z

1 votes

我最喜欢的方式是

var objectKeysArray = Object.keys(yourJsonObj)

objectKeysArray.forEach(function(objKey) {

var objValue = yourJsonObj[objKey]

})

Tharanga answered 2020-06-17T18:24:49Z

0 votes

为时已晚,但我认为需要进一步说明如下

您也可以通过一个简单的循环遍历JSON数组,例如

for(var i = 0;i< jsonArray.length;i++)

{

console.log(jsonArray[i].attributename);

}

如果您有一个json对象,并且想要遍历其所有内部对象,则首先需要获取所有keys数组并遍历这些键以检索具有键名的对象,例如

var keys = Object.keys(jsonObject);

for(var i=0,i < keys.length;i++)

{

var key = keys[i];

console.log(jsonObject.key.attributename);

}

Asad Ali Choudhry answered 2020-06-17T18:25:18Z

nodejs 遍历json数据_异步-使用node.js遍历JSON相关推荐

  1. js怎么将json数据展示在html代码,JS格式化json数据展示到页面中

    html页面: 查询json结果 studyid* partnerId token 查询 查询结果: css代码: .red-text { color: red; } .size-big { widt ...

  2. wps解析json数据_通过WordPress HTTP API 获取json内容并解析

    WordPress 4.0的一个亮点就是JSON API的加入,今天我们提前来看看怎么获取JSON的内容并显示出来.过程就是用PHP获取远程JSON的内容,然后把获取到的JSON转化为PHP对象,然后 ...

  3. node.js 生成文件_如何使用Node.js在几秒钟内生成模拟数据

    node.js 生成文件 介绍 (Introduction) In most of the applications, you need to have some static JSON data w ...

  4. wps解析json数据_浏览器处理2500MB JSON文件的解析与绘图问题(实践分享,非战斗人员请忽略)...

    最近在做一个浏览器画数据图的任务. 任务其实很简单,浏览器通过ajax请求拿到服务端已经生成好的json文件,然后在前端浏览器绘制相应的折线图,饼状图等. 很丑陋的dataflow 起初我的做法 le ...

  5. 如何使用Node.js解析JSON?

    我应该如何使用Node.js解析JSON? 是否有一些模块可以安全地验证和解析JSON? #1楼 我想提一下,全局JSON对象还有其他选择. JSON.parse和JSON.stringify都是同步 ...

  6. node.js 读取json文件

    node.js 读取json文件 效果图 目录结构 data.json index.htm app.js 学习资源推荐 效果图 目录结构 data.json [{"name": & ...

  7. php怎么传json数据_php怎么接收前端传来的json数据

    php怎么接收前端传来的json数据php 如何接收前端传来的json数据 前端用JQ 生成一个有字段名和值格式的键值对 的JSON 格式的字串 转码后 提交给后台的PHP 处理 代码如下 json_ ...

  8. android studio使用nodejs本地服务器json数据_使用Node.js的Alexa技巧

    可以使用AlexaLambda函数或RESTAPI端点开发Alexa技能.Lambda函数是Amazon实现AWS中提供的无服务器功能.Amazon建议使用Lambda函数,尽管它们不容易调试.虽然您 ...

  9. 地区的json数据_数据密集型系统基础:数据模型与查询语言

    (点击上方公众号,可快速关注) 转自:知了小巷-知了笔记 [导读]:大多数应用程序是通过一层一层叠加数据模型来构建的.每一层都面临的关键问题是:「如何将其用下一层来表示?」复杂的应用程序可能会有更多的 ...

  10. wps解析json数据_一些非常实用的JSON 教程

    以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 ...

最新文章

  1. Leetcode 141. Linked List CycleJAVA语言
  2. 《Python游戏编程快速上手》第四章-讲笑话
  3. 微型统计分析系统README
  4. Segment fault之痛
  5. java B2B2C Springboot电子商城系统
  6. Matlab与线性代数
  7. DLA实现跨地域、跨实例的多AnalyticDB读写访问 1
  8. python源文件的执行方式_python源程序执行的方式有哪几种
  9. 697.数组的度(力扣leetcode) 博主可答疑该问题
  10. vb与mysql实现登录界面_VB连接SQL数据库做用户登录窗口
  11. 各个省市mysql表附带行政id(一)
  12. 计算机图学图形裁剪,计算机图形学——裁剪
  13. html怎么把音乐播放器放到中间,怎么把音乐播放器放到自己的博客首页面上去?...
  14. java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
  15. 胆囊结石在我们的生活中有哪些危害呢?
  16. Unity资源加载简析(一)Resources
  17. pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法
  18. 信奥题库(OI题库)8月月赛T1题解 幂次数
  19. Failed to remove network i5unxjx3ahdfrhksw0fmyqpjd: Error response from daemon: network *
  20. linux硬盘对拷 ghost,100%完美保留数据 Ghost硬盘对拷_硬盘_内存硬盘技巧-中关村在线...

热门文章

  1. 手机双拼输入法下的智能纠错
  2. 【CPRI】(2)组网方式及接口指标
  3. html 倒计时 插件,jQuery倒计时插件leftTime.js
  4. java sql编写教务系统_教务管理系统的设计与实现(SQLServer)
  5. 微信公众号 开发详解05【二维码制作、调查表单、短网址、微小宝、引流】
  6. MD5加密----------
  7. MyBatis缓存结构
  8. 金融借贷中的风险控制
  9. Chrome最新版如何安装代理Proxy SwitchyOmega
  10. comsol3.5 软件下载