gpt4 book ai didi

JavaScript - 如果第一个值为零,则读取 Json

转载 作者:行者123 更新时间:2023-11-30 14:31:50 24 4
gpt4 key购买 nike

我有一个这样的 Json 文件

{
"0":{
"poperty1":"poperty1",
"poperty2":"poperty2",
},
"1":{
"poperty1":"poperty1",
"poperty2":"poperty2",
},
"2":{
"poperty1":"poperty1",
"poperty2":"poperty2",
},
}

我用这个函数读了它:

function readJson(){
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "file.json", false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status === 0)
{
// console.log(JSON.parse(rawFile.responseText));
}
}
};
rawFile.send(null);
return JSON.parse(rawFile.responseText);
}

但它返回除 0 以外的所有值

"1":{
"poperty1":"poperty1",
"poperty2":"poperty2",
},
"2":{
"poperty1":"poperty1",
"poperty2":"poperty2",
}

即使我删除并使用 1 启动 json,它也会返回 1。

所以知道为什么吗?

最佳答案

编辑

我更新了your JSON在 github 上,我测试了 XHR 响应和解析的对象,以检查是否正确,我可以肯定地说它工作正常:

function readJson(){
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "https://raw.githubusercontent.com/crisz/file/master/file.json", false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status === 0)
{
console.log(JSON.parse(rawFile.responseText));
}
}
};
rawFile.send(null);
// return JSON.parse(rawFile.responseText);
}

readJson();

在之前的回答中我没有注意到异步函数内部的return,如果你对异步函数在Javascript中的工作方式有疑问,你可以查看this answer。 .

旧答案

您的 JSON 格式不正确。 JSON specification不希望在集合的最后一个键值末尾有逗号。

去掉结尾的逗号,解析就可以了:

{
"0":{
"poperty1":"poperty1",
"poperty2":"poperty2"
},
"1":{
"poperty1":"poperty1",
"poperty2":"poperty2"
},
"2":{
"poperty1":"poperty1",
"poperty2":"poperty2"
}
}

如果同时删除逗号,结果对象中仍然存在问题,请尝试测试您的 API 端点以查看响应是否符合您的预期。

关于JavaScript - 如果第一个值为零,则读取 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com