【发布时间】:2015-08-20 13:24:38
【问题描述】:
我使用这个 curl 命令:
curl -X POST -H "Content-Type: application/json" http://localhost:8081/creditcard -d '{"credit-card":"1234-5678-9101-1121"}'
在我的 js 文件中,我有这个代码块来获取信用卡的价值:
request.on('data', function(data) {
var cc = 'credit-card';
var a = JSON.parse(data.toString());
console.log(a[cc]);
}
为此我得到:
undefined:1
'{credit-card:1234-5678-9101-1121}'
^
SyntaxError: Unexpected token '
at Object.parse (native)
at IncomingMessage.<anonymous> (<path>\ccserver.js:32:34)
at IncomingMessage.emit (events.js:107:17)
at IncomingMessage.Readable.read (_stream_readable.js:373:10)
at flow (_stream_readable.js:750:26)
at resume_ (_stream_readable.js:730:3)
at _stream_readable.js:717:7
at process._tickCallback (node.js:355:11)
所以我尝试使用 JSON.stringify 如下:
request.on('data', function(data) {
var cc = 'credit-card';
var a = JSON.parse(JSON.stringify(data.toString()));
console.log(a[cc]);
}
但这就是我得到的:
undefined
undefined
但是,当我尝试解析一个硬编码的 json 字符串时,一切正常:
var jsonString = '{"credit-card":"1234-5678-9101-1121"}';
var a = JSON.parse(jsonString);
console.log(a[cc]);
结果:
1234-5678-9101-1121
从这个 json 中获取数据的正确方法是什么?
请指教 谢谢
【问题讨论】:
-
你为什么打电话给
data.toString()?那不是已经是string了吗? -
@simon
'data'chunk默认为Buffer,除非使用setEncoding()。 -
在 JSON 到达服务器之前,双引号似乎已被消耗。您使用哪个控制台/终端/shell 来调用
curl? -
改写@JonathanLonowski 已经说过的话,你问“从这个json中获取数据的正确方法是什么?”但你应该问“ 获取 cURL 以发送正确 JSON 字符串的正确方法是什么?"
-
@JonathanLonowski - 我下载了适用于 Windows 的 curl 命令,并且正在从 cmd 运行。