Axios对JSON的响应数据

jslywgbw  于 2022-10-21  发布在  iOS
关注(0)|答案(4)|浏览(256)

我不熟悉JavaScript和Axios,所以任何帮助都是很好的:)
我从Axios到URL的请求得到了这样的响应。

data: '{"id":"test1", "cool":"test2"}'

在尝试JSON.parse时,如下所示

const buildArray = (await axios(config)).data
let toJSON = JSON.parse(buildArray)

它给了我一个错误

Unexpected token  in JSON at position 0

以下是我的代码和我正在尝试做的事情。对于每个Axios数据响应,我希望将其添加到数组项中并返回。

async function buildList(items, token){
try {
    const list = []
    let config = ''

    for (item of items.items) {
        config = {
            method: 'get',
            url: 'https://my.domain.com/v1/customers/' + item.id,
            headers: {
                'Authorization': 'Bearer ' + token,
                'Accept': 'application/json'
            }
        }

        const buildArray = (await axios(config)).data
        list.push(JSON.parse(buildArray))
    }

    return list

} catch (err) {
    throw Error ('buildList error: ', err.message)
}
}
uqdfh47h

uqdfh47h1#

这样行吗?

const response = await axios(config) // waiting to response
const { data } = response // make sure we can get data
let toJSON = JSON.parse(data)
lndjwyie

lndjwyie2#

我有几件事你可以试一试。
1.我建议你澄清你的命名约定。如果构建数组变量是一个数组,则除非采用JSON格式,否则无法对其进行解析。我继续假设它就是您显示的响应数据对象。
1.尝试转义首引号内的引号。它看起来是这样的:
data: "{\"id\":\"test1\", \"cool\":\"test2\"}"
1.Axios回报了一个承诺。尝试在Promise.Then格式中使用它,而不是等待。

axios(config).then((response) => 
{ 
   JSON.parse(response); 
}).catch((err) => 
{
   console.log("Failed: " + err);
});

如果这些都不管用,请告诉我。祝你好运:)

jucafojl

jucafojl3#

请确保您的回复数据正确无误。如果在后端将数据作为对象返回,则不需要使用JSON进行解析。JSON.parse用于将字符串解析为JSON请运行以下命令并检查:

const buildArray = (await axios(config)).data;
console.log(buildArray );
xoshrz7s

xoshrz7s4#

我终于找到了一种解决办法,但我不知道为什么Axios Response在我查看的每个地方都给了我正确的数据响应输出,但不知为什么有一个奇怪的输出?(问号)在字符串的开头,我只是在复制输出并将其粘贴到JSON验证网站后才意识到这一点。
基本上,从Visual Studio输出来看,它是正确显示的,大概是这样。

data: '{"id":"test1", "cool":"test2"}'

但出于某种原因,当我从Visual Studio复制此输出并将其粘贴到JSON验证网站时,它给出了这个结果。怪异的?(问号)

data: '?{"id":"49f362ad

所以我试图找到一个JSON正则表达式验证,在运行了许多不同的正则表达式后,其中一个给出了一个未定义的结果,而不是?(问号),所以我在下面尝试了这个并成功了,但这是奇怪的,我不是一个开发人员来进一步讨论它,我只是发送这个答案来分享这个结果:)

list.push(JSON.parse(buildArray.replace(/[^\\"]+/).replace('undefined', '{')))

相关问题