You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用eval解析Tumblr API返回的JS格式数据的方法

解决Tumblr API返回JS格式而非JSON的解析问题(无需eval)

我懂你的困扰——Tumblr这个API返回的是带变量声明的JS代码,不是标准JSON,还不能用eval(毕竟安全风险真的不能忽视)。别慌,用字符串处理+标准JSON.parse就能完美搞定这个问题。

核心思路

Tumblr返回的内容本质是JSONP风格的响应,只是多了开头的var tumblr_api_read = 和可能存在的结尾分号。我们只需要把这些多余的部分剥离掉,剩下的就是标准JSON字符串,再用JSON.parse解析成JS对象就行,完全不用碰eval。

具体实现步骤

  1. 获取响应文本:先把API返回的内容以纯文本形式拿到(别直接用response.json(),格式不对会直接报错)。
  2. 清理字符串:用正则表达式移除开头的变量声明和结尾可能存在的分号。
  3. 解析为JSON:用JSON.parse把清理后的字符串转换成JavaScript对象,之后就能正常操作数据了。

完整代码示例

// 发起API请求
fetch('https://taylorswift.tumblr.com/api/read?start=0&format=json&num=1')
  .then(response => response.text()) // 先获取纯文本格式的响应
  .then(rawResponse => {
    // 移除多余的前缀和可能的后缀分号
    const cleanJsonStr = rawResponse.replace(/^var tumblr_api_read = |;$/g, '');
    
    try {
      // 解析成可操作的JS对象
      const tumblrData = JSON.parse(cleanJsonStr);
      
      // 示例:打印博主名称和第一篇帖子的URL
      console.log('博主名称:', tumblrData.tumblelog.name);
      console.log('第一篇帖子URL:', tumblrData.posts[0].url);
    } catch (parseErr) {
      console.error('JSON解析失败:', parseErr);
    }
  })
  .catch(reqErr => {
    console.error('API请求失败:', reqErr);
  });

为什么这个方法更安全?

和eval不同,JSON.parse只会严格解析标准JSON格式的内容,不会执行任何代码逻辑,就算响应里混入了恶意内容也无法触发执行,彻底规避了eval带来的安全隐患。

内容的提问来源于stack exchange,提问作者hguser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:23:50