【问题标题】:Can't access JSON value from curl无法从 curl 访问 JSON 值
【发布时间】: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 运行。

标签: json node.js curl


【解决方案1】:

尝试从绝对路径读取

curl -X POST
     -H 'Content-Type:application/json'
     -H 'Accept: application/json'
     --data-binary @/full/path/to/test.json
     http://server:port/xyz/abc/blah -v -s

好吧,您已经有了 String,因此您只需将其转换为 javascript 变量并使用 .notation。建议使用firebug查看变量中的内容。

 obj = JSON.parse(json);
 obj.cc or obj.cc[0] 

应该给你你想要的。

【讨论】:

  • 这些步骤在请求和响应中添加内容类型。您在回复中收到“”,这可能是由于内容类型。您是否尝试过在 IE 中使用 firebug 或 F12 选项来查看值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多