Javascript 未定义的属性axios和原始github内容
我试图用下面的代码在GitHub上获取一个json文件,在上周之前,一切都按预期工作,但是现在检索到的实际数据被弄乱了。它实际上返回一个数字数组?设置Javascript 未定义的属性axios和原始github内容,javascript,github,axios,Javascript,Github,Axios,我试图用下面的代码在GitHub上获取一个json文件,在上周之前,一切都按预期工作,但是现在检索到的实际数据被弄乱了。它实际上返回一个数字数组?设置Accept和Content-Type标题没有任何作用。 我真的无法解释这种行为,非常感谢您的帮助 axios .get("https://raw.githubusercontent.com/speckleworks/SpeckleManagerFeed/master/repos.json") .then(resp => {
Accept
和Content-Type
标题没有任何作用。
我真的无法解释这种行为,非常感谢您的帮助
axios
.get("https://raw.githubusercontent.com/speckleworks/SpeckleManagerFeed/master/repos.json")
.then(resp => {
console.log(resp.data);
// RETURNS:
// {
// "connectorRepos":[
// {
// "name":"SpeckleGSA",
// "owner":"arup-group",
// ...
console.log(resp.data.connectorRepos);
// RETURNS:
// undefined
console.log(Object.keys(resp.data));
// RETURNS
// ["0", "1", "2", "3", "4", "5", "6", "7", ...
let x = JSON.parse(JSON.stringify(resp.data))
console.log(Object.keys(x));
// RETURNS
// ["0", "1", "2", "3", "4", "5", "6", "7", ...
})
.catch(err => {
console.log("Unable to obtain repos list. " + err);
return;
});
Chris在上面的评论中解决了这个问题,json文件后面有一个额外的逗号,无法通过axios/json.parse()进行解析。看起来Github没有将内容类型的响应头设置为
application/json
;因此,resp.data是一个字符串。您需要执行constdata=JSON.parse(resp.data)
首先,现在您可以访问数据。connectorRepos
等。谢谢@ChrisG,我尝试过了,但是JSON。解析失败,JSON中的SyntaxError:Unexpected token]位于1725
位置,但它是有效的JSON,我用外部工具验证过它……它无效;第47行中有一个尾随逗号。恐怕这不是问题所在,删除了尾随逗号,解析仍然失败位置1处JSON中意外的标记o
。如果问题与内容类型有关,console.log(Object.keys(JSON.parse(JSON.stringify(resp.data)))我相信code>应该可以工作,但它不是……这个错误意味着对象被强制转换为字符串,在本例中是“[object object]”
,您试图将其解析为JSON。通常的原因是对对象调用了JSON.parse()
。正如您在这里看到的,JSON现在确实很好:我怀疑axios正在自动将其解析为JSON(因为它不再无效,所以现在您可以直接访问resp.data.connectorRepos
,而无需自己解析)