Node.js和Express - 从SoundCloud API向前端发送JSON对象使其成为一个字符串

时间:2014-12-25 16:58:49

标签: javascript json node.js http express

我一直在使用http.get()调用SounbdCloud API方法来接收我想传递给浏览器的JSON对象。我可以确认我收到的数据是一个对象,因为我调用数据的typeof()方法打印出它是一个对象。

var getTracks = http.get("http://api.soundcloud.com/tracks.json?q="+query+"&client_id=CLIENT_ID", function(tracks) {
    tracks.on('data', function (chunk) {
        console.log(typeof(chunk)); // where I determine that I receive an object
        res.send(chunk);
    });
    //console.log(tracks.data);
}).on("error", function(e){
    console.log("Got error: "+e);
});

但是当我检查我在浏览器中生成的AJAX请求中收到的数据时,我发现收到的数据有一种String类型(再次,我通过调用typeof()知道这一点)

$('#search').click(function(e){
  e.preventDefault();  
  var q = $("#query").val();
  $.ajax({ 
        url: '/search',
        type: 'POST', 
        data: { 
          "query": q
        }, 
        success: function(data){
          alert(typeof(data));
          alert(data);
        }, 
        error: function(xhr, textStatus, err){
          alert(err);
        }
      })
  });    

我很感激帮助,因为我不知道问题出在哪里,或者我是否在错误的地方寻找答案(也许这与我使用SoundCloud的HTTP API有关)

1 个答案:

答案 0 :(得分:0)

JSON是一个字符串。我假设您需要一个表示您的JSON字符串的Object。
只需使用以下方法。

var obj = JSON.parse(data);


另一个例子是:

var jsonStr = '{"name":"joe","age":"22","isRobot":"false"}';
var jsonObj = JSON.parse(jsonStr);
jsonObj.name //joe
jsonObj.age // 22