HTTP请求JSON:意外.解析错误-如何消除它

HTTP Request JSON: Unexpected .parse error - How do I exterminate it?

本文关键字:何消 错误 JSON 请求 意外 HTTP      更新时间:2023-09-26

我正在使用IBMBluemix为学校项目制作web服务。

我的项目需要从API请求JSON,这样我就可以使用它提供的数据。

我对API服务的http请求有问题。我在Windows 10命令提示符中收到以下警报。

"Syntaxerror:意外令牌"

我知道我的JSON请求有问题,但事实确实如此吗?

这是我的.js文件和运行它时得到的错误屏幕的打印

/*eslint-env node*/
//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------
// HTTP request - duas alternativas
var http = require('http');
var request = require('request');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
//chama o express, que abre o servidor
var express = require('express');
// create a new express server 
var app = express();
// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();
// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
    // print a message when the server starts listening
    console.log("server starting on " + appEnv.url);
});
app.get('/home1', function(res){
    http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
		var body = '';
		res.on('data', function(chunk){
			body += chunk;
		});
		res.on('end', function(){
			var json = JSON.parse(body);
		});
		var json = JSON.parse(res);
		var cotacao = json["bovespa"]["cotacao"];
	
		console.log("A sua cotação é "+cotacao);
	
	});
});

命令行中错误屏幕的打印

您需要使用在.on('end' 中创建的json对象

res显然不是字符串时,尝试JSON.parse res会导致错误(res.toString()导致[Object-Object]。。。因此错误是无效的JSON

app.get('/home1', function(res){
    http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
        var body = '';
        res.on('data', function(chunk){
            body += chunk;
        });
        res.on('end', function(){
            var json = JSON.parse(body);
            var cotacao = json["bovespa"]["cotacao"];
            console.log("A sua cotação é "+cotacao);
        });
    });
});

尝试配置用于解析json主体的应用程序:

app.configure(function () {
  app.use(express.json())
})

您将收到一个解析的json对象