如何将fetch请求PHP接口返回的数组格式字符串转换为实际数组
问题原因
你当前代码中调用了res.text()处理请求响应,这个方法会将返回的所有内容直接解析为纯文本字符串,所以你拿到的是序列化后的JSON格式字符串,而非可直接操作的JavaScript数组。
解决方案
方案1(推荐):使用res.json()解析响应
fetch内置的json()方法可以自动将符合JSON格式的响应字符串直接解析为原生JavaScript数组/对象,修改代码如下:
fetch("./php/getuser.php", { method: "GET" }) .then((res) => res.json()) .then((data) => { console.log(data); // 此时data已经是数组类型,可直接通过data[0].name等方式读取属性 });
方案2:手动解析JSON字符串
如果有特殊场景必须先获取纯文本响应,你可以用JSON.parse()手动将字符串转为JS数组/对象:
fetch("./php/getuser.php", { method: "GET" }) .then((res) => res.text()) .then((dataStr) => { const data = JSON.parse(dataStr); console.log(data); });
注意事项
- 建议在PHP端输出JSON前添加响应头声明,避免解析异常:
<?php // 放在所有输出之前 header('Content-Type: application/json'); // 后续输出json的逻辑 echo json_encode($your_array); ?> - 可以追加
catch捕获JSON解析或请求的异常:fetch("./php/getuser.php", { method: "GET" }) .then((res) => res.json()) .then((data) => { console.log(data); }) .catch((err) => { console.error('请求或解析失败:', err); });
内容的提问来源于stack exchange,提问作者Curtis Crentsil
相关产品推荐
相关产品推荐

