当前位置: 首页 > 知识库问答 >
问题:

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

沈德寿
2023-03-14

我想将正确格式的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)
  });
}

轨迹数组中的第一项是:

"{↵ "专辑“:{↵ “相册类型”:“相册”,↵ “艺术家”:[{↵
“外部URL”:{↵ “spotify”:https://open.spotify.com/artist/1yAwtBaoHLEDWAnWR87hBT"↵ },↵
“href”:https://api.spotify.com/v1/artists/1yAwtBaoHLEDWAnWR87hBT",↵ “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”、“MC”、“MT”、“MX”、“MY”、“NI”、“NL”、“NO”、“NZ”、“PA”、“PE”、“PH”、“PL”、“PT”、“PY”、“SE”、“SG”,“SK”,“SV”,“TR”,“TW”,“US”,“UY”],↵
“外部URL”:{↵ “spotify”:https://open.spotify.com/album/4YvdAtWh6LlnIrv0qIqkCF"↵ },↵
“href”:https://api.spotify.com/v1/albums/4YvdAtWh6LlnIrv0qIqkCF",↵ “id”:“4YVDATWH6LNIRV0QKCF”,↵ “图像”:[{↵ “高度”:640,↵ “url”:”https://i.scdn.co/image/411d254a0e46f509dda22f58d699782f16f7bd44",↵
“宽度”:640↵ }, {↵ “高度”:300,↵ “url”:”https://i.scdn.co/image/982b3b7c3ad3e81aed9e0475da07894262f93923",↵
宽度:300↵ }, {↵ “高度”:64,↵ “url”:”https://i.scdn.co/image/e4a25681c1163b349ff71b464d2cfc8fda089d58",↵
“宽度”:64↵ } ],↵ “名字”:“没有人是第一个,你是下一个”,↵ “类型”:“相册”,↵ “uri”:“spotify:album:4YVDATWH6LNIRV0QKCF”↵ },↵ “艺术家”:[{↵ “外部URL”:{↵ “spotify”:https://open.spotify.com/artist/1yAwtBaoHLEDWAnWR87hBT"↵ },↵
“href”:https://api.spotify.com/v1/artists/1yAwtBaoHLEDWAnWR87hBT",↵ “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”,“MX”,“MY”,“NI”,“NL”,“NO”,“NZ”,“PA”,“PE”,“PH”,“PL”,“PL”,“PT”,“PY”,“SE”,“SG”,“SK”、“SV”、“TR”、“TW”、“US”、“UY”],↵ "光盘编号:1,↵ “持续时间”:330573,↵ “明确”:错误,↵ “外部_id”:{↵ “isrc”:“USSM10700655”↵ },↵ “外部URL”:{↵ “spotify”:https://open.spotify.com/track/6Z3pIqEp5n5faSopwto0tB"↵ },↵ “href”:”https://api.spotify.com/v1/tracks/6Z3pIqEp5n5faSopwto0tB",↵ “id”:“6Z3pIqEp5n5faSopwto0tB”,↵ “名称”:“鼠王”,↵ “人气”:38,↵ “预览url”:https://p.scdn.co/mp3-preview/037294fdd97c94bebf14e7ec1b1fb2c0a1986adc",↵ “轨道号”:7,↵ “类型”:“轨道”,↵ “uri”:“spotify:track:6Z3pIqEp5n5faSopwto0tB”↵}"

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

共有1个答案

常睿范
2023-03-14

改变身体来回应

request('https://api.spotify.com/v1/tracks/' + songLinks[i].split(":").pop(), function(error, response, body) {
    tracks.push(JSON.parse(body));
  });
 类似资料:
  • 问题内容: 我正在尝试通过JSONP获取一些数据。使用Firebug,我可以看到正确返回的数据,但是我很难思考如何解析它。数据返回真的是嵌套数组正确吗?是回调函数的名称。数据如下所示: 关于如何正确解析和输出只是有些困惑。 问题答案: 您不必解析数据。它已经是有效的JavaScript对象。例如,要在someFunction中打印第一个对象的description属性

  • 我正在尝试解析一个XML文档,但由于某种原因,我无法从任何东西中获取任何子节点。我已经厌倦了我所知道的一切。我最初尝试使用Dom4J,但在命名空间方面遇到了重大困难。现在我正在尝试使用标准DOM解析器。 我已经阅读了oracle教程以及其他教程,但没有看到任何关于为什么我最基本的功能失败的建议。 我将首先分享我的代码: 所以简单地说,我想做的就是返回根节点(即“文档”)的子节点。)有一个应该返回的

  • 问题内容: 我必须使用Java应用程序中的.NET托管Web服务。两者之间的互操作性通常非常好。我遇到的问题是.NET应用程序开发人员选择使用.NET DataSet对象公开数据。有很多关于为什么不应该这样做以及如何使互操作性变得困难的文章: http://www.hanselman.com/blog/ReturningDataSetsFromWebServicesIsTheSpawnOfSata

  • 问题内容: 我想解析网页http://dcsd.nutrislice.com/menu/meadow- view/lunch/ 以获取今天的午餐菜单。(我已经构建了Adafruit #IoT热敏打印机,并且希望每天自动打印菜单。) 我最初使用BeautifulSoup来解决这个问题,但事实证明,大多数数据都已加载到JavaScript中,并且我不确定BeautifulSoup是否可以处理它。如果您

  • 我有一个向服务器发出HTTP请求的Play Web应用程序。 请求进行得很顺利:我得到了一个200状态码和Content type=“application/xml”的响应。 如果我打印到stdout响应正文,我会看到一个格式良好的Xml文档。 然而,如果我试图创建一个组织。w3c。多姆。使用WSResponse从响应中提取XML文档。asXml(),该方法返回一个空文档。 以下是我的代码的相关部

  • 问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于: