我有一个在Node.js环境中运行的JavaScript应用程序,并使用ZeroMQ与其客户端(也在JavaScript中)进行通信。消息以JSON格式出现在服务器上。
应用程序代码将其抛出
Node.js SyntaxError: Unexpected token in JSON at position 0
使用JSON.parse()解析它时。我无法弄清楚这个问题。我已使用http://jsonlint.com
验证了JSON欢迎任何有关JSON.parse()的帮助。
编辑:01/10 / 17,15:33 以下是客户端和服务器JavaScript代码文件。您需要创建.js文件,无法发布这么大的代码。 还提供了JSON数据文件。 您需要启动server.js和client.js,然后服务器控制台将打印出无法识别的字符的异常。
https://www.4shared.com/folder/6VFJqrgU/javascript.html
Stackoverflow强制实施链接发布限制,因此必须发布一个包含所有文件的链接。
仅供参考,我是C ++程序员,所以不必担心代码格式或编程风格。我必须为项目需要做这件事。
编辑02/10 / 17,11:50:事实证明它是JSON.parse()方法无法解析json。但是,我在args [1] .toString()中添加了一个.trim()调用,并且错误已向下游移动。在位置10的JSON中出现意外的令牌o。我不明白出了什么问题!
编辑04/10/17:这是最小的代码。
var fs = require('fs');
try
{
var event = fs.readFileSync('demoReport.json', 'utf8');
console.log(event);
var eventObj = JSON.parse(event);
var reportName = event["ReportName"];
var reportData = event["ReportData"];
console.log(reportData);
}
catch(error)
{
console.log("JSON parsing failed: " + error);
}
这是json:
{"EventName":"ReportGenEvent","TemplateFileNameLocation":"File location","ReportFormat":".pdf","ReportName":"TestReport","ReportLocation":"report location","Locale":"French","ReportData":{"dateTime":"2017-09-29T00:05:22.824Z","streamName":"","measurementTime":"2017-04-01T01:13:25.000Z","durationSeconds":0.0,"outOfBand":false,"notFinal":false,"newMeasurement":false,"savedFileName":"","measurementType":"Unknown","analysisElapsedSeconds":1.3462,"analysisElapsedCPUSecs":0.0624004,"geometryID":"GEOM","geometryDescription":"","measurementUUID":"6060c80f-007c-4992-88f8-55e2200d99b7","backgroundUUID":"","measurementWorkflowID":"Measurement","instrumentProperties":{"classCode":8,"description":"","manufacturer":"","model":"","properties":"locationName=Home latitude=25 longitude=20 elevation=30","serialNumber":"product/1","versionInformation":"=V1.0"}}}
感谢。