NodeJS来自JSON调用的奇怪响应

时间:2015-05-06 10:04:10

标签: json node.js

我收到了JSON电话的响应!这是我的回复输出: Console Output

那是我的JSON请求:

    Mixer.Info microphone = null;
    for (Mixer.Info info : AudioSystem.getMixerInfo()) {
        System.out.println(info);
        if (info.getName().equals("Port Built-in Microphone")) {
            System.out.println("found " + info);
            microphone = info;
        }            
    }

    final Mixer mixer = AudioSystem.getMixer(microphone);

我认为这是关于字符集的错误,但我不知道如何改变它。

解决方案:

request({
url: url,
json: true
}, function (error, response, body) {
    if (!error && response.statusCode === 200) {
        console.log(body)
    }
})

2 个答案:

答案 0 :(得分:1)

我已经从你的代码中清除了很多误导性的垃圾,以解决问题的核心。

现在重现原始问题:

var request = require('request');

getItemPrice("StatTrak™ UMP-45 | Delusion (Minimal Wear)")

function getItemPrice(market_hash_name, callback) {
    var url = "http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=" + market_hash_name;

    request({
        url: url,
        json: true
    }, function(error, response, body) {
        console.log(body);
        if (!error && response.statusCode === 200) {
            console.log(parseFloat(((body.lowest_price).replace(/\,/g, '.')).split('&')[0]));
        }
    })
}

您的问题是您所呼叫的内容不是有效的网址,而服务器对此做出的反应非常糟糕。

您必须将特殊字符编码为URL格式:

var url = "http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=" + 
    encodeURIComponent(market_hash_name);

答案 1 :(得分:-1)

您称之为什么样的REST API?如果是节点js API,则可以在那里设置字符集

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

如果不是这种情况,请像这样设置请求字符集

request.setHeader('Accept-Charset', 'UTF-8)