将字符串转换为JSON导致问题

时间:2013-12-15 07:44:45

标签: json node.js

我正在从未正确配置的api请求数据。

它用作text / html,但是当我运行JSON.parse(数据)时,我得到一个解析错误。我做data.trade它说未定义。

如果我只是回显数据,它看起来像这样(样本,而不是完整的对象):

"{\"buyOrder\":[{\"price\":\"5080.000000\"}]}"

以下是相关网址: http://www.btc38.com/trade/getTradeList.php?coinname=BTC

我正在使用request模块来获取数据。

如何将此字符串转换为JSON对象?

以下是请求:

var url = 'http://www.btc38.com/trade/getTradeList.php?coinname=BTC'
, json = true;

request.get({ url: url, json: json, strictSSL: false, headers: { 'User-Agent' : 'request x.y' } }, function (err, resp, data) {
   c.log(data.trade); //undefined
});

2 个答案:

答案 0 :(得分:3)

修剪弦乐让一切都很适合我:

var request = require('request');

options = {
  url: 'http://www.btc38.com/trade/getTradeList.php?coinname=BTC',
  headers: {
    'User-Agent': 'request x.y'
  }
};

request(options, function(error, response, body) {
  var cleaned = body.trim();
  var json = JSON.parse(cleaned);
  console.log(json.trade);
});

输出(截断):

[ { price: '5069.000000',
    volume: '0.494900',
    time: '2013-12-15 16:05:44',
    type: '2' },
  { price: '5069.000000',
    volume: '0.230497',
    time: '2013-12-15 16:02:37',
    type: '2' },
  { price: '5100.000000',
    volume: '0.058963',
    time: '2013-12-15 15:58:27',
    type: '1' },
  { price: '5100.000000',
    volume: '0.099900',
    time: '2013-12-15 15:58:27',
    type: '1' },
  { price: '5099.000000',
    volume: '0.344058',
    time: '2013-12-15 15:56:58',
    type: '1' },
  { price: '5069.000000',
    volume: '0.027464',
    time: '2013-12-15 15:55:35',
    type: '2' } ... ]

答案 1 :(得分:0)

如果没有看到更多代码,我将无法分辨出错误,但我建议您使用request-jsonnpm install request-json)软件包。

我刚刚在Node中运行了以下内容并得到了回复:

var request = require('request-json');
var client = request.newClient('http://www.btc38.com');
client.get('/trade/getTradeList.php?coinname=BTC', function(err,res,body) { 
    // body is a JSON object
    return console.log(body); 
});