Articles of parsing

在Nodejs中parsing大的JSON文件并独立处理每个对象

我需要在Nodejs中读取一个大的JSON文件(大约630MB)并将每个对象插入到MongoDB中。 我已经阅读了这里的答案: 在Nodejs中parsing大的JSON文件 。 但是,那里的答案是逐行处理JSON文件,而不是逐个对象地处理它。 因此,我仍然不知道如何从这个文件中获取对象并进行操作。 我在我的JSON文件中有大约100,000个这样的对象。 数据格式: [ { "id": "0000000", "name": "Donna Blak", "livingSuburb": "Tingalpa", "age": 53, "nearestHospital": "Royal Children's Hospital", "treatments": { "19890803": { "medicine": "Stomach flu B", "disease": "Stomach flu" }, "19740112": { "medicine": "Progeria C", "disease": "Progeria" }, "19830206": { "medicine": "Poliomyelitis B", "disease": "Poliomyelitis" } }, "class": "patient" }, […]

Node.js JSONparsing错误

我正在尝试使用node.js制作Facebook应用程序,但是在检查已签名的请求时遇到了麻烦。 每次我提出请求时,程序都会抛出一个SyntaxError:Unexpected token ILLEGAL ,如下所示: undefined:1 ":"721599476"} ^^ SyntaxError: Unexpected token ILLEGAL 罪魁祸首function如下: function parse_signed_request(signed_request, secret) { encoded_data = signed_request.split('.',2); // decode the data sig = encoded_data[0]; json = base64url.decode(encoded_data[1]); data = JSON.parse(json); // ERROR Occurs Here! // check algorithm – not relevant to error if (!data.algorithm || data.algorithm.toUpperCase() != 'HMAC-SHA256') { console.error('Unknown algorithm. Expected […]

如何parsing与Node.js肮脏的CSV?

由于许多错误,我无法正确parsingCSV文件,我正在摸索着。 我提取了一个样本,你可以在这里下载: testingCSV文件 主要的错误(或产生错误)是: 引号和逗号(试图用Rparsing文件时出现很多错误) 空行 意外的换行符在一个字段中 我首先决定逐行使用正则expression式来清理数据,然后将它们加载到R中,但无法解决问题,而且是两个慢的(200Mo文件) 所以我决定使用下面的代码在Node.js下使用CSVparsing器 : 'use strict'; const Fs = require('fs'); const Csv = require('csv'); let input = 'data_stack.csv'; let readStream = Fs.createReadStream(input); let option = {delimiter: ',', quote: '"', escape: '"', relax: true}; let parser = Csv.parse(option).on('data', (data) => { console.log(data) }); readStream.pipe(parser) 但: 一些行正确parsing(string数组) 有些不被parsing(所有字段都是一个string) 有些行仍然是空的(可以通过添加skip_empty_lines: true来解决skip_empty_lines: true选项) […]

如何处理快速nodejs中的body-parser错误

我正在使用以下数据在Node上进行Web服务, 我的请求数据是: { "first_name":"surinder",, "last_name":"rawat", "email":"surinder.rawat@testcompany.com", "phone":"1234567890", "password":"surinder", "user_type":"H", "device_type":"A" } 并得到以下错误: Connect 400 SyntaxError: Unexpected token , at Object.parse (native) at parse (/home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/typs /json.js:76:17) at /home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/read.js:98:18 at IncomingMessage.onEnd (/home/surinder/workspace/HappyHakka/node_modules/body-parser /node_modules/raw-body/index.js:136:7) at IncomingMessage.g (events.js:180:16) at IncomingMessage.emit (events.js:92:17) at _stream_readable.js:943:16 at process._tickCallback (node.js:419:13) 我故意用双逗号来得到这个错误。 我想知道如何处理这个错误,并以正确的格式显示用户错误 谢谢

节点请求抛出:错误:无效的URI“www.urlworksinbrowser.com”或options.uri是必需的参数

我在Ubuntu 12.04上使用Node v0.10.11。 我不知道我错过了什么使一个urlstream的请求模块工作。 这个程序正在尝试去邮件列表网站,find每个月的下载链接,然后每个月下载一次。 mikeal的自述文件中提到:“第一个参数可以是一个url或一个选项对象,唯一需要的选项是uri,其他所有的都是可选的uri || url – 来自url.parse()的完全限定的uri或parsing的url对象。 如果我打电话给url.parse(www.targeturl.com),我得到[错误:options.uri是必需的参数]如果我不使用url.parse,我得到[错误:无效的URI“www.freelists.org / archive / si-list / 06-2013“](这个链接在我的浏览器中工作得很好) 我把代码缩减到了42行。 任何意见欢迎 var request = require('request'), url = require('url'), stream = require('stream'), cheerio = require('cheerio'), // a reduced jQuery style DOM library Transform = require('stream').Transform var DomStripStream = function(target) { this.target = target; stream.Transform.call(this,{objectMode: true}); } DomStripStream.prototype = […]

使用节点将stringparsing为JSON会产生意外的令牌,validation器说ok

我有以下string,我想parsing为JSON: { "STATUS": [ { "STATUS": "S", "When": 1394044643, "Code": 17, "Msg": "GPU0", "Description": "cgminer 3.7.3" } ], "GPU": [ { "GPU": 0, "Enabled": "Y", "Status": "Alive", "Temperature": 70, "Fan Speed": 3089, "Fan Percent": 70, "GPU Clock": 1180, "Memory Clock": 1500, "GPU Voltage": 1.206, "GPU Activity": 99, "Powertune": 20, "MHS av": 0.4999, "MHS 5s": 0.5009, […]

试图parsingJSON,而不会崩溃Node.js服务器

我正在使用支持Node.js开发一个项目,我也使用JSON通过Web套接字传递数据到客户端和从客户端。 我的问题是,如果一个无效的string被发送到服务器(很容易由用户搞乱JavaScript控制台),那么它会崩溃服务器,同时试图parsing它。 我用来防止这种情况的当前方法是使用try / catch语句。 我的问题是,是否有一个更正确的方法来检查一个string是否可以parsing? 另外,是使用try / catch语句的良好实践还是仅仅意味着debugging? 谢谢。

Javascript将string转换为对象数组

我有一个NodeJS应用程序接受一个string(上传的input !)我没有控制input我只是build立一个REST服务来处理数据。 该string意味着一个JSON对象 数组 ,然后我可以通过循环来提取每个元素… 我收到以下(作为string): [ {Name: 'Jane', Id: '005b0000000MGa7AAG'}, {Name: 'Tom', Id: '005b0000000MGa7AAF'} ] 当我尝试JSON.parse这个我得到 SyntaxError: Unexpected token N 所以可以理解,因为我知道这是无效的JSON 而这下一个string是有效的JSON并通过http://jsonlint.com/ : [ {"Name": "Jack", "Id": "005b0000000MGa7AAA"}, {"Name": "Jill", "Id": "005b0000000MGa7AAB"} ] 我的问题是: 我如何接受第一个input并parsing它以允许: parsed[0]['Name'] == 'Jane' >> true 我的第一本能是将stringreplace(例如名称为“名称”),然后尝试parsing它。 但是,如果有其他人有解决办法,我会很感激。

是否有一个asynchronousJSONparsing器的Node模块不会将整个JSONstring加载到内存中?

我意识到有很多Node模块提供了parsingJSON的asynchronousAPI ,但是其中许多模块似乎将整个文件或stream读入内存,构build一个巨大的string,然后将其传递给JSON.parse() 。 这是“如何使用NodeJSparsingJSON?”的第二个答案。 build议 ,而且正是jsonfile模块所做的。 构build一个巨大的string正是我想要避免的。 我想要一个像这样的API: parseJsonFile(pathToJsonFile): Promise 返回的Promiseparsing为parsing的JSON对象。 这个实现应该使用恒定的内存量。 我对任何类似SAX的东西都不感兴趣,因为在parsing各种片断时广播事件只是最终的结果。 我认为jsonparse可以做我想做的事情(它明显包括了parsingJSON而不使用JSON.parse() )的逻辑,但是在README.md没有简单的例子, 示例目录中的一个文件看起来过于复杂。

如何有效地读取字节的位?

我正在开发一个包含WebSockets的项目,服务器(Node.js)和客户端(Chrome)之间的数据使用自定义(非常简单)的格式发送,用于我设置的数据交换。 我正在发送3位数据,因为我发送了所有有8种可能性的项目。 数据格式如下所示: 0 1 bit index 01234567 8901… item aaabbbcc cddd… 目前,我正在parsing像这样的字节的项目: var itemA = bytes[0] >> 5; var itemB = (bytes[0] >> 2) & 7; var itemC = (bytes[0] & 3) << 1 | bytes[1] >> 7; var itemD = (bytes[1] >> 4) & 7; 就个人而言,这感觉太复杂了。 问题是,它只是复杂的,因为我得到的字节数是8的倍数。要parsing出3位的项目,我必须进行位移,执行AND操作,因为8不能被3整除有时甚至必须像itemC那样结合两个字节的itemC 。 以3位组而不是8位组读取这些数据会更加有效。 我想到的是使用.toString(2)将所有字节转换为一个string,然后使用.substring得到一个长度为3的子string,并转换回一个数字parseInt(bitString, 2) ,但我想这不是做这件事的方式,因为string操作很慢,我实际上没有做任何string相关的。 是否有可能读取例如3组中的位而不是从字节parsing它们? […]