在节点中将 JSONP 响应字符串转换为 JSON
Posted
技术标签:
【中文标题】在节点中将 JSONP 响应字符串转换为 JSON【英文标题】:Convert JSONP response string to JSON in node 【发布时间】:2016-07-30 08:23:34 【问题描述】:我在节点服务器上向返回 JSONP 的端点发出请求。我尝试删除回调参数并且请求失败。正在寻找一种将这个 JSONP 响应转换为普通 JSON 的方法。
data: 'callback1241232([201, "name": "Thomas"]);'
预期
data: [201, "name": "Thomas"]
axios
是我用来发出这些请求的库,它不会为您转换。
【问题讨论】:
给它一个回调来使用,然后把它从字符串中剥离出来。 我只有你在上面看到的这个对象,有什么回调可以使用? “我在节点服务器上向返回 JSONP 的端点发出请求。我尝试删除回调参数,但请求失败。” 这就是我的回调参考。 端点接受一个回调参数,这个参数用于包装函数,这是供客户端使用的,所以当脚本加载到页面上时,回调会触发。我不能在服务器上用这个做任何事情...... 对,所以给它一个回调参数,然后在服务器上从 JSONP 字符串中删除回调。这是非常简单的字符串操作,你甚至不需要正则表达式。 【参考方案1】:这是使用regex
的一种方法。
return axios.get('http://ex.com/jsonp-res?callback=callback')
.then(data =>
data = JSON.parse(data.data.replace(/^callback\(|\)\;/g, ''))
console.log(data)
)
【讨论】:
【参考方案2】:这是使用可怕的eval
的一种方法。
return axios.get('http://ex.com/jsonp-res?callback=callback')
.then(data =>
function callback(data)
console.log(data)
eval(data.data)
)
【讨论】:
以上是关于在节点中将 JSONP 响应字符串转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何将afnetworking json字典转换为字符串,然后在IOS中将字符串转换为字典?