【问题标题】:Convert JSONP response string to JSON in node在节点中将 JSONP 响应字符串转换为 JSON
【发布时间】:2016-07-30 08:23:34
【问题描述】:

我在节点服务器上向返回 JSONP 的端点发出请求。我尝试删除回调参数并且请求失败。正在寻找一种将这个 JSONP 响应转换为普通 JSON 的方法。

{ data: 'callback1241232([201, {"name": "Thomas"}]);'}

预期

{ data: [201, {"name": "Thomas"}] }

axios 是我用来发出这些请求的库,它不会为您转换。

【问题讨论】:

  • 给它一个回调来使用,然后把它从字符串中剥离出来。
  • 我只有你在上面看到的这个对象,有什么回调可以使用?
  • “我在节点服务器上向返回 JSONP 的端点发出请求。我尝试删除回调参数,但请求失败。” 这就是我的回调参考。
  • 端点接受一个回调参数,这个参数用于包装函数,这是供客户端使用的,所以当脚本加载到页面上时,回调会触发。我不能在服务器上用这个做任何事情......
  • 对,所以给它一个回调参数,然后在服务器上从 JSONP 字符串中删除回调。这是非常简单的字符串操作,你甚至不需要正则表达式。

标签: json node.js string 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)
    })
    

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2011-08-28
      • 2013-01-14
      • 1970-01-01
      相关资源
      最近更新 更多