繁体   English   中英

SyntaxError:JSON中位置1处的意外令牌a

[英]SyntaxError: unexpected token a in JSON at position 1

我正在尝试将专辑从“汽车”重命名为“汽车”。 但是,请继续获取以下错误。 SyntaxError:位置1上的JSON中意外的令牌a。

可能是什么问题呢?

我正在使用以下curl命令:

-s -X POST -H "Content-Type: application/json" \-d { "album_name" : "Car" }  http://localhost:8080/albums/cars/rename.json

这是我的server.js:

var express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser');
var app = express();
app.use(morgan('dev'));    



var fs = require('fs'),
album_hdlr = require('./handlers/albums.js'),
page_hdlr = require('./handlers/pages.js'),
helpers = require('./handlers/helpers.js');

app.use(express.static(__dirname + "/../static"));

app.get('/v1/albums.json', album_hdlr.list_all);
app.get('/v1/albums/:album_name.json', album_hdlr.album_by_name);
app.get('/pages/:page_name', page_hdlr.generate);
app.get('/pages/:page_name/:sub_page', page_hdlr.generate);
app.get("/", function (req, res) {
res.redirect("/pages/home");
res.end();
});

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.post(function(req, res){
console.log(req.body);
res.end('want to update album name to '
        + req.body.album.new_name + "\n");
});

app.get('*', four_oh_four);

function four_oh_four(req, res) {
res.writeHead(404, { "Content-Type" : "application/json" });
res.end(JSON.stringify(helpers.invalid_resource()) + "\n");
}

app.listen(8080);

还有我的package.json:

{
"description": "Our Photo Sharing Application with static middleware",
"version": "0.0.2",
"private": true,
"dependencies": {
    "async": "2.x",
    "body-parser": "^1.18.3",
    "express": "4.x",
    "morgan": "1.x",
    "multer": "1.x",
    "typescript": "^2.0.0"
}
}

在您的curl命令中,双引号可能已被评估,请尝试

-s -X POST -H "Content-Type: application/json" \\-d '{ "album_name" : "Car" }' http://localhost:8080/albums/cars/rename.json


尝试使用单引号,如下所示:

curl -s -X POST -H "Content-Type: application/json" -d '{ "album_name" : "Car" }'  http://localhost:8080/albums/cars/rename.json

或使用双引号将内部双引号转义

curl -s -X POST -H "Content-Type: application/json" -d "{ \"album_name\" : \"Car\" }"  http://localhost:8080/albums/cars/rename.json

我也不明白你为什么要转义“ -d”。 没有必要。

可能是cURL请求未正确传递正文请求中的信息吗?

我有一个使用cURL发出POST请求的批处理文件。 我用来使正文正确发布的语法是Amirr0r回答中的第二种语法。 我尝试重新格式化文件的-d部分以使用单引号,并且不使用主体转义双引号,但是它没有正确传递值。

因此,如果像上面的答案那样构造cURL调用的正文部分,它应该正确地传递数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM