已订阅TikTok API,如何用console.log正常输出响应及stats字段值
问题场景
已订阅TikTok API服务,需求是通过控制台打印接口返回的完整响应内容,以及stats.videoCount、stats.viewCount这类嵌套统计字段的取值。
当前可正常发起请求的初始代码如下:
fetch("https://api.promptapi.com/tiktok/hashtag/{planttrees}", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error));
代码可成功获取到以下结构的响应内容:
接口返回的序列化内容形态为带外层引号、字段使用单引号的字符串,对应业务结构为:
{ "challengeInfo": { "challenge": { "id": "50923585", "title": "planttrees", "desc": "", "profileThumb": "", "profileMedium": "", "profileLarger": "", "coverThumb": "", "coverMedium": "", "coverLarger": "", "isCommerce": false }, "stats": { "videoCount": 1420, "viewCount": 4500000 }, "challengeAnnouncement": { "body": "", "title": "" } }, "shareMeta": { "title": "#planttrees on TikTok", "desc": "4.0m views - Watch awesome short videos created with trending hashtag #planttrees" } }
已尝试但无效的打印方式
console.log(result):仅能输出原始字符串形式的响应内容,无法通过点语法直接读取嵌套字段值console.log(response):当前链式回调的作用域内无法访问到fetch返回的原始Response对象,会直接抛出未定义错误console.log(JSON.stringify(result))/console.log(JSON.stringify(response)):对已经是字符串类型的result做序列化无实际意义,对包含流对象的response做序列化无法得到有效业务内容
正确实现方式
核心问题是当前代码仅把响应转为纯文本字符串,没有做格式清洗和对象解析,同时存在作用域引用错误。可按照以下步骤修改代码:
fetch("https://api.promptapi.com/tiktok/hashtag/planttrees", requestOptions) .then(async (response) => { // 读取接口返回的原始文本 const rawResponseText = await response.text(); // 清洗不符合JSON规范的格式问题:去掉外层包裹的引号、替换单引号为标准双引号 const formattedJsonStr = rawResponseText .replace(/^"|"$/g, '') .replace(/'/g, '"') .replace(/\\"/g, '"'); // 解析为可直接读取属性的JS对象 const parsedData = JSON.parse(formattedJsonStr); // 打印完整结构化响应 console.log('完整响应内容:', parsedData); // 打印目标统计字段 console.log('话题关联视频数:', parsedData.challengeInfo.stats.videoCount); console.log('话题累计播放量:', parsedData.challengeInfo.stats.viewCount); }) .catch(error => console.log('请求异常', error));
关键注意事项
- 原请求路径中的
{planttrees}是占位符,实际请求时需要移除大括号,直接传入话题名称,否则会导致接口请求路径错误 - 不要在读取文本的then回调中跨作用域引用上一级的
response变量,当前作用域下该变量处于闭包外,无法直接访问 - 如果接口后续返回的是标准无转义、无外层包裹的JSON格式,可以直接用
response.json()替代手动清洗解析的逻辑,减少代码量 - 解析后的JS对象可直接在控制台展开查看所有嵌套属性,不需要额外做JSON.stringify转换
内容的提问来源于stack exchange,提问作者RubyRube
相关产品推荐
相关产品推荐

