如何从 JSON 文件读入 JavaScript? [复制]

Posted

技术标签:

【中文标题】如何从 JSON 文件读入 JavaScript? [复制]【英文标题】:How do I read into JavaScript from JSON file? [duplicate] 【发布时间】:2021-10-23 10:42:27 【问题描述】:

如何将 JSON 文件中的信息读入 javascript,以便可以将该值显示到 html 页面中?

在 if 语句和 item.innerHTML 行中都没有从 JSON 文件中获取数据。

我从 JSON 文件中读取了动物的值,然后 if 语句将信息打印到 HTML 文件中

let animals = JSON.parse(animals);

for(let i = 0; i < animals.length; i++)
      if(animals.dogs[i].dogId === dog[i]) 
          item.innerHTML += "<li>" + animals.dogs[i].dogName + "</li>";
        

JSON 文件中的数据如下所示:


    "animals": 
        "dogs": [
            
                "dogId": "DW-001",
                "dogName": "Fido",
                "dogType": "Poodle",
                "dogType": "Small",
                "description": "Excellant lap dog, doesn't shed.",
                "pricePerHour": "3.0"
            
     ]
    

【问题讨论】:

你不能像这样使用 HTML/JS 读取磁盘上的文件。 在 Web 中工作时,您始终需要知道代码在哪里执行。您正在从某处的服务器编写该 Javascript,但它在其浏览器某处的客户端计算机上执行。该计算机无权访问您的服务器。如果您希望包含 JSON,则必须将其添加到服务器端的 Javascript 中。 数组dog未定义 @Musafiroon 是,我没有包含整个 JavaScript 文件 【参考方案1】:

在您的情况下,最简单的解决方案是将 JSON 文本作为变量添加到您的 JavaScript 中

let animalData = '''

    "animals": 
        "dogs": [
            
                "dogId": "DW-001",
                "dogName": "Fido",
                "dogType": "Poodle",
                "dogType": "Small",
                "description": "Excellant lap dog, doesnt shed.",
                "pricePerHour": "3.0"
            
     ]
    

'''

【讨论】:

我想这样做,但规范明确指出我无法编辑 JSON 文件【参考方案2】:

如果您有两个文件分别是 index.htmlanimals.json 然后

您可以使用 `fetch API 来读取文件

即。

index.html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
</head>

<body>
    <div id="item"></div>
    <script>
        var item = document.querySelector('#item');
        var animals;
        var dog = ["DW-001"]
        fetch("./animals.json")
            .then(x => x.text())
            .then(y => 
                animals = JSON.parse(y.replaceAll(/(\r|\n|\s)/g, "")).animals;
                console.log('hello')
                for (let i = 0; i < animals.dogs.length; i++) 
                    if (animals.dogs[i].dogId === dog[i]) 
                        item.innerHTML += "<li>" + animals.dogs[i].dogName + "</li>";
                    
                

            );
    </script>
</body>

</html>
animals.json -- 没有对您的原始文件进行任何更改

    "animals": 
        "dogs": [
            
                "dogId": "DW-001",
                "dogName": "Fido",
                "dogType": "Poodle",
                "dogType": "Small",
                "description": "Excellantlapdog,doesntshed.",
                "pricePerHour": "3.0"
            
        ]
    

这对我有用

【讨论】:

以上是关于如何从 JSON 文件读入 JavaScript? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用简单的 JSON 库将 json 文件读入 java

带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary

使用 pyspark,如何将文件中单行的多个 JSON 文档读入数据框?

如何将此 JSON 数据读入 Python

将 JSON 文件读入表中

如何使用 Javascript 从 JSON 文件中选择随机对象(?)?