繁体   English   中英

Axios 响应数据到 JSON

[英]Axios response data to JSON

我不熟悉 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)
}
}

这个可以吗?

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

我有几件事你可以试试。

  1. 我建议您澄清您的命名约定。 如果 buildArray 变量是一个数组,那么它不能被解析,除非是 JSON 格式。 我继续假设它是您显示的响应数据 object。

  2. 尝试 escaping 初始引号内的引号。 它看起来像这样:

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

  3. Axios 返回 promise。 尝试在 Promise.then 格式中使用它而不是等待。

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

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

请确保您正确获取响应数据。 如果您在后端返回数据为 object,则无需使用 JSON 进行解析。 JSON.parse 用于将字符串解析为 JSON 请运行此命令并检查:

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

我终于找到了一种解决方法,但我不知道为什么 Axios 响应在我所看到的任何地方都给了我正确的 output 数据响应,但由于某种原因有一个奇怪的? (问号)在字符串的开头,我才意识到在应对output并将其粘贴到JSON验证网站后。

基本上来自 Visual Studio output 它显示正确,类似的东西。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM