Javascript JSON.parse位置0处的意外标记
我正在尝试学习JSON并观看我的视频。在编写代码的过程中,我在位置0处得到了JSON.parse意外标记s。我不太确定如何修复这个错误,也不确定它会带来什么后果 我查看了视频的问答部分,似乎很多人都遇到了相同的错误,但没有解决方案。我也检查了一些stackoverflow的答案,但是我对JSON的概念太陌生了,所以没有任何意义。任何帮助都将不胜感激Javascript JSON.parse位置0处的意外标记,javascript,json,Javascript,Json,我正在尝试学习JSON并观看我的视频。在编写代码的过程中,我在位置0处得到了JSON.parse意外标记s。我不太确定如何修复这个错误,也不确定它会带来什么后果 我查看了视频的问答部分,似乎很多人都遇到了相同的错误,但没有解决方案。我也检查了一些stackoverflow的答案,但是我对JSON的概念太陌生了,所以没有任何意义。任何帮助都将不胜感激 const express = require("express"); const bodyParser = require("body-pars
const express = require("express");
const bodyParser = require("body-parser");
const request = require("request"); // use to do a request to an external
server
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get("/", function(req, res) {
res.sendFile(__dirname + "/index.html");
});
app.post("/", function(req, res) {
var crypto = req.body.crypto;
var fiat = req.body.fiat;
var URL = "https://apiv2.bitcoinaverage.com/indices/global/ticker/";
var finalURL = URL + crypto + fiat;
request(finalURL, function(error, response, body) {
var data = JSON.parse(body)
var price = data.last;
var currentDate = data.display_timestamp;
res.write("The current date is " + currentDate);
res.write("<h1>The current price of" + crypto + " is: " + price + fiat +
"</h1>");
res.send();
});
});
app.listen(3000, function() {
console.log("Server started on port 3000.");
});
const express=require(“express”);
const bodyParser=require(“body parser”);
const request=require(“请求”);//用于向外部用户发出请求
服务器
常量app=express();
use(bodyParser.urlencoded({extended:true}));
应用程序获取(“/”,函数(请求,恢复){
res.sendFile(uu dirname+“/index.html”);
});
应用程序post(“/”,功能(请求,回复){
var crypto=req.body.crypto;
var fiat=所需阀体fiat;
变量URL=”https://apiv2.bitcoinaverage.com/indices/global/ticker/";
var finalURL=URL+crypto+fiat;
请求(最终、功能(错误、响应、正文){
var data=JSON.parse(正文)
var价格=data.last;
var currentDate=data.display\u时间戳;
res.write(“当前日期为”+当前日期);
res.write(“加密+”的当前价格为:“+价格+菲亚特+
"");
res.send();
});
});
app.listen(3000,函数(){
log(“服务器在端口3000上启动”);
});
HTML部分
<form action="/" method="post">
<select name=" crypto">
<option value="BTC">Bitcoin</option>
<option value="ETH">Ethereum</option>
<option value="LTC">Lightcoin</option>
</select>
<select name="fiat">
<option value="USD">US Dollars</option>
<option value="GBP">GB Pounds</option>
<option value="EUR">EU Euros</option>
</select>
<button type="submit" name="button">Check</button>
</form>
比特币
以太坊
光币
美元
GB磅
欧盟欧元
检查
预期的输出应该是当您选择加密货币和货币(如美元、英镑、欧元)时,它会告诉您加密货币的价格。当向此API发出错误URL的请求时,您会得到一个字符串,返回到JSON.parse并返回此错误。可能是API提供程序超时更改了此链接。请尝试在浏览器中访问此api路由,看看它是否有效
很可能你传递了错误的URL。你从
正文
中得到了什么?请求(finalURL,函数(错误,响应,正文){console.log(正文)
您可以在HTML中删除加密之前的多余空间。如果是这样,您可以删除此问题。由于
中的空间,您将未定义的ID
添加到url中,而不是例如BTCUSD
。API以文本回复:符号未定义的ID不受支持。等等,因为您正在尝试若要解析此标记,但它不是JSON,您将收到错误。请注意,大多数错误都可以通过查看启动应用程序的命令提示符轻松确定;node在抱怨意外标记之前拼写出API回复。并添加res.setHeader(“Content Type”,“text/html;charset:utf-8”)
在发送回复代码之前先发送回复代码。这里最重要的一课是学会爱上console.log()
它允许您随时检查所有变量,以确保它们包含您认为它们包含的内容。最后,JSON的概念是发送这样的文本:可以将其解析为对象。Firefox甚至会对其进行预解析,并将结果显示为树。