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

Post API返回类对象数组字符串解析失败,如何转为可用JS对象?

解决API返回JSON解析失败问题(含奇怪字符导致SyntaxError)

问题背景

调用Post API时,返回内容在Postman中显示为标准JSON结构,但使用response.json()或JSON.parse()时抛出错误:SyntaxError: Expected property name or '}' in JSON at position 2,目前只能通过response.text()获取字符串形式的响应,需要解析后提取每个对象的code和number字段进行校验。

Postman中显示的响应结构如下:

{
    "items": [
        {
            "number": 119777777,
            "code": "S",
            "name": "name Full award ",
            "year": 2021,
            "updatedate": "04-JAN-2023"
        },
        {
            "number": 119777777,
            "code": "H",
            "name": "Hospital funding.",
            "year": 2021,
            "updatedate": "04-JAN-2023"
        }
    ]
}

解决方案

问题根源是响应字符串包含不可见的无效字符(如UTF-8 BOM头、非打印控制字符等),Postman会自动过滤这些字符,但JS解析器无法识别。需先清理字符串再解析:

修改后的代码

function GetFunding() {
    fetch('my url', {
        method: "POST"
    })
    .then(function (response) {
        return response.text(); // 先获取原始文本
    })
    .then(function (bodyText) {
        // 清理无效字符:去除BOM头、控制字符,替换非标准空格
        const cleanedText = bodyText
            .replace(/^\uFEFF/, '') // 移除UTF-8 BOM头
            .replace(/[\x00-\x1F\x7F]/g, '') // 移除控制字符
            .replace(/\s+/g, ' '); // 统一替换所有空白字符为标准空格
        
        try {
            const data = JSON.parse(cleanedText);
            // 提取并校验code和number字段
            data.items.forEach(item => {
                console.log(`number: ${item.number}, code: ${item.code}`);
                // 这里添加你的校验逻辑
            });
        } catch (err) {
            console.error('清理后仍无法解析JSON:', err);
            console.log('清理后的文本:', cleanedText);
        }
    })
    .catch(function (err) {
        console.error('请求失败:', err);
    });
};

关键处理说明

  • 直接用response.text()获取原始响应,跳过自动解析步骤
  • 清理逻辑覆盖常见无效字符:
    • ^\uFEFF:移除UTF-8 BOM头(常见于部分后端返回的JSON)
    • [\x00-\x1F\x7F]:移除ASCII控制字符(如换行、制表符以外的不可见字符)
    • 统一空白字符避免非标准空格导致的解析问题
  • 用try-catch包裹解析过程,方便排查剩余问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:25:19