0

我正在使用 Adob​​e Scene7 媒体服务器,它烦人地将图像数据对象返回为 JSONP,带有注释和包装功能。

.fetch()用来发出请求并希望从响应中获取一些数据。

点击 URL 会返回以下响应结构:

/*jsonp*/
s7jsonResponse({
    "set": { /* image data here */ }},
    "aCustomPassedIdentifier"
);

我只关心object返回的,s7jsonResponse()但我正在努力弄清楚如何最好地解析这个 JSONP。

目前,我text()在理想情况下从响应中得到json()

 fetch(url)
    .then((response) => response.text())

然后使用响应文本,我必须使用它str.replace来去除必要的注释和包装功能:

fetch(url)
    .then((response) => response.text())
    .then((data) => {
      data = data
        .replace("/*jsonp*/", "")
        .replace("s7jsonResponse(", "")
        .replace(',"aCustomPassedIdentifier");', "")
    })

最后我可以将剩余的文本解析为 JSON:

fetch(url)
    .then((response) => response.text())
    .then((data) => {
      data = JSON.parse(data
        .replace("/*jsonp*/", "")
        .replace("s7jsonResponse(", "")
        .replace(',"aCustomPassedIdentifier");', "")
      )
    })

这感觉就像是一种令人难以置信的 hacky 方式来获得我需要的东西。有没有更好的办法?有没有我可以调用的替代方法response,以便在没有额外内容的情况下仅访问 JSON?

4

0 回答 0