/ / SyntaxError: Несподіваний маркер u на Object.parse (рідний) NodeJS для JSON.parse () - javascript, json, node.js, розбір

Синтаксичний випадок: неочікуваний токен на об'єкті. Parse (рідний) NodeJS для JSON.parse () - javascript, json, node.js, синтаксичний аналіз

Я перебуваю на етапах навчання NodeJs, і я бувнамагаючись отримати значення параметрів з json, переданого в URL. Я використовую аналізатор тіла, тому що я бачив багато відповідей на переповнення стека, використовуючи ті самі, щоб проаналізувати дані.

Нижче вказана URL-адреса, яку я проходжу,

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

Я отримую вказану нижче помилку,

SyntaxError: Unexpected token u
at Object.parse (native)
at C:UserssummerDesktopnodejspractise3.njs:14:17
at Layer.handle [as handle_request] (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterlayer.js:95:5)
at next (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterroute.js:131:13)
at Route.dispatch (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterroute.js:112:3)
at Layer.handle [as handle_request] (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterlayer.js:95:5)
at C:UserssummerDesktopnodejsnode_modulesexpresslibrouterindex.js:277:22
at Function.process_params (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterindex.js:330:12)
at next (C:UserssummerDesktopnodejsnode_modulesexpresslibrouterindex.js:271:10)
at jsonParser (C:UserssummerDesktopnodejsnode_modulesbody-parserlibtypesjson.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, будь ласка, скажіть.

Відповіді:

6 за відповідь № 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);

5 для відповіді № 2

JSON.parse задихається, оскільки на відміну від Javascript, JSON вимагає, щоб усі імена ключів були в лапках [0], тому ваш JSON повинен бути

{"username":rv,"password":password}

Помилка "Несподіваний маркер u ..." виникає, коли аналізатор JSON стикається з "u" на початку "ім'я користувача", коли він очікував лапки.

[0] На сайті є дуже читабельний підсумок специфікації JSON http://json.org.


-2 для відповіді № 3

Це відбувається тому, що ім'я ключа повинно бути вкладено всередину подвійні лапки. Ось вирішення цієї проблеми:

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