Javascript 解析从节点服务器Spotify返回的json

Javascript 解析从节点服务器Spotify返回的json,javascript,jquery,json,node.js,spotify,Javascript,Jquery,Json,Node.js,Spotify,我想将正确格式的JSON从节点服务器发送回前端 var express = require('express'); var app = express(); app.get('/route', function(req, res){ res.json(tracks) }); 然后在前端,我使用jQuery发出一个GET请求 $.get('http://localhost:8888/route', function(data){ console.log(JSON.parse(da

我想将正确格式的JSON从节点服务器发送回前端

var express = require('express');
var app = express();
app.get('/route', function(req, res){
    res.json(tracks)
});
然后在前端,我使用jQuery发出一个
GET
请求

$.get('http://localhost:8888/route', function(data){
    console.log(JSON.parse(data));
});
这是在返回数据,但它是以字符串形式返回的。我尝试使用
JSON.parse
,但收到以下错误消息<节点端的代码>数据是一个对象数组。也许这引起了一个问题

未捕获的SyntaxError:意外的标记,在JSON中位于2847(…)

要填充轨迹数组,我有以下代码

tracks = [];
for (var i = 0; i < songLinks.length; i++) {
  request('https://api.spotify.com/v1/tracks/' + songLinks[i].split(":").pop(), function(error, response, body) {
    tracks.push(body)
  });
}
tracks=[];
对于(var i=0;i
轨迹数组中的第一项是:

"{↵ "专辑“:{↵ “相册类型”:“相册”,↵ “艺术家”:[{↵
“外部URL”:{↵ “spotify”: ""↵ },↵
“href”:“,↵ “id”:“1yAwtBaoHLEDWAnWR87hBT”,↵ “名称”:“谦逊的鼠标”,↵
“类型”:“艺术家”,↵ “uri”: “spotify:艺术家:1yAwtBaoHLEDWAnWR87hBT”↵ } ],↵
“可用市场”:[“AD”、“AR”、“AT”、“AU”、“BE”、“BG”、“BO”, “BR”、“CA”、“CH”、“CL”、“CO”、“CR”、“CY”、“CZ”、“DE”、“DK”、“DO”, “EC”、“EE”、“ES”、“FI”、“FR”、“GB”、“GR”、“GT”、“HK”、“HN”、“HU”, “ID”、“IE”、“IS”、“IT”、“JP”、“LI”、“LT”、“LU”、“LV”、“MC”、“MT”, “MX”、“MY”、“NI”、“NL”、“NO”、“NZ”、“PA”、“PE”、“PH”、“PL”、“PT”, “PY”、“SE”、“SG”、“SK”、“SV”、“TR”、“TW”、“US”、“UY”],↵
“外部URL”:{↵ “spotify”: ""↵ },↵
“href”:“,↵ “id”:“4YVDATWH6LNIRV0QKCF”,↵ “图像”:[{↵ “高度”: 640,↵ “url”: "",↵
“宽度”:640↵ }, {↵ “高度”:300,↵ “url”: "",↵
“宽度”:300↵ }, {↵ “高度”:64,↵ “url”: "",↵
“宽度”:64↵ } ],↵ “名字”:“没有人是第一个,你是下一个”,↵ “类型”:“相册”,↵ “uri”:“spotify:album:4YVDATWH6LNIRV0QKCF”↵ },↵ “艺术家”:[{↵ “外部URL”:{↵ “spotify”: ""↵ },↵
“href”:“,↵ “id”:“1yAwtBaoHLEDWAnWR87hBT”,↵ “名称”:“谦逊的鼠标”,↵
“类型”:“艺术家”,↵ “uri”: “spotify:艺术家:1yAwtBaoHLEDWAnWR87hBT”↵ } ],↵ “可用市场”: [“AD”、“AR”、“AT”、“AU”、“BE”、“BG”、“BO”、“BR”、“CA”、“CH”、“CL”, “CO”、“CR”、“CY”、“CZ”、“DE”、“DK”、“DO”、“EC”、“EE”、“ES”、“FI”, “FR”、“GB”、“GR”、“GT”、“HK”、“HN”、“HU”、“ID”、“IE”、“IS”、“IT”, “JP”、“LI”、“LT”、“LU”、“LV”、“MC”、“MT”、“MX”、“MY”、“NI”、“NL”, “否”、“新西兰”、“PA”、“PE”、“PH”、“PL”、“PT”、“PY”、“SE”、“SG”、“SK”, “SV”、“TR”、“TW”、“US”、“UY”],↵ “光盘编号”:1,↵ “持续时间”: 330573,↵ “明确”:错误,↵ “外部_id”:{↵ “isrc”: “USSM10700655”↵ },↵ “外部URL”:{↵ “spotify”: ""↵ },↵ “href” : "",↵ “id”: “6Z3PIQEP5N5FASOPWT0TB”,↵ “名称”:“鼠王”,↵ “人气”:38,↵ “预览url”: "",↵ “轨道号”:7,↵ “类型”:“轨道”,↵ “uri”: “spotify:track:6Z3pIqEp5n5faSopwto0tB”↵}"

下面是回复的截图,以防我的问题变得更清楚


更改身体以响应

request('https://api.spotify.com/v1/tracks/' + songLinks[i].split(":").pop(), function(error, response, body) {
    tracks.push(JSON.parse(body));
  });

这意味着
data
不是有效的
json
@人造丝谢谢!我在节点端做错了什么吗?你能发布代码说明你是如何在node.js端创建数据的吗?你能不能也发布一个json字符串(屏幕截图中的索引0)?@phantom你可以在这里验证你的json:建议你只记录收到的数据(而不是解析的结果):这将允许您将其复制到其他工具中(或手动检查)。这给了我一个对象数组和工作类型。这意味着在前端,我必须循环遍历返回的每个对象和
JSON.parse(数据[i].body)
。这是最好的方法吗?问题是我在推送到tracks数组之前没有解析响应体。是的,如果你有有效的json,你不需要解析每个条目。我建议你使用它来获取多个trak,这是一个ajax调用