簡體   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