SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data相关的知识,希望对你有一定的参考价值。

这是火狐浏览器的报错,为什么我的数据昨天还可以调出来,今天就报错了呢?

昨天正常,今天报错了,是因为不是每天取到的数据都是一样的。
报错很正常。
用console.log()打印出来看看,或者直接运行后端代码看一看输出的格式为什么不正常。
参考技术A 应该是json格式不对,检查下字符集,或者是原始字符串追问

但是昨天就出来了,今天啥也没动就报错

参考技术B 这是提示你参数this.responseText中有非法的JSON字符串,你看看this.responseText
的内容是什么追问

啥也没有呀,就是从数据库中读取出来的数据,用的json.parse()转换的

SyntaxError: JSON.parse() 的 Object.parse (native) NodeJS 中的意外标记 u

【中文标题】SyntaxError: JSON.parse() 的 Object.parse (native) NodeJS 中的意外标记 u【英文标题】:SyntaxError: Unexpected token u at Object.parse (native) NodeJS for JSON.parse() 【发布时间】:2016-03-25 04:07:15 【问题描述】:

我正处于 NodeJs 的学习阶段,我试图从 URL 中传递的 json 中获取参数值。我正在使用正文解析器,因为我看到许多堆栈溢出答案都使用相同的方法来解析数据。

下面是我传递的网址,

http://localhost:1337/login?json=username:rv,password:password

我收到下面提到的错误,

SyntaxError: Unexpected token u
at Object.parse (native)
at C:\Users\summer\Desktop\nodejs\practise3.njs:14:17
at Layer.handle [as handle_request] (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\summer\Desktop\nodejs\node_modules\express\lib\router\index.js:271:10)
at jsonParser (C:\Users\summer\Desktop\nodejs\node_modules\body-parser\lib\types\json.js:100:40)

代码如下,

var express = require('express');
var http = require('http');
var app = express();
var bodyparser = require('body-parser');

app.use(bodyparser.json());

app.get('/login',function(req,res,next)
    var content = '';
    var data = '';
    data = req.query.json;
    content = JSON.parse(data);        //I am getting the error here
    res.writeHead(200,"Content-type":"text/plain");
    res.write(data);
    res.end();
);

http.createServer(app).listen(1337);
console.log("Server Started successfully at Port 1337");

注意:阅读此问题后,如果您知道从 json 数据中收集值的其他替代方法,请告知。

【问题讨论】:

【参考方案1】:

而不是这个:

data = req.query.json;
content = JSON.parse(data);        //I am getting the error here

试试这个:

data = req.query.json;
var stringify = JSON.stringify(data)
content = JSON.parse(stringify);       

【讨论】:

【参考方案2】:

JSON.parse 令人窒息,因为与 Javascript 不同,JSON 要求所有键名都包含在引号 [0] 中,因此您的 JSON 应该是

"username":rv,"password":password

当 JSON 解析器在“用户名”的开头遇到“u”时,会出现错误“Unexpected token u...”,而它需要引号。

[0] 在http://json.org 上有一个非常易读的 JSON 规范摘要。

【讨论】:

我弄清楚了整个事情,顺便说一句,键和值都应该在引号中(“”)才能进行 JSON 解析。【参考方案3】:

这是因为键名必须用双引号括起来。以下是解决此问题的解决方法:

var jsonObj = eval('(' + YOUR_JSON_STRING + ')');

【讨论】:

只想指出,如果YOUR_JSON_STRING 是用户输入,这是很危险的!

以上是关于SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError:JSON.parse:JSON 的第 1 行第 2 列出现意外字符

SyntaxError:JSON.parse:意外字符在我的控制台中?

我在使用 JSON.parse 时收到“SyntaxError: Unexpected token ' in JSON at position 1”

未捕获的 SyntaxError:JSON.parse (<anonymous>) 处的 JSON 输入意外结束

DiscordJS + NodeJS:SyntaxError:JSON.parse 处的 JSON 输入意外结束(<anonymous>)

SyntaxError:JSON.parse (<anonymous>) 处的 JSON 输入意外结束