如何读取本地json文件并将其存储在变量中?

时间:2019-11-13 10:57:47

标签: javascript html json bootstrap-4

这是我的问题。在我的脚本中,我在变量中有一个Json存储。我想将json存储在本地文件中。 (这将是一个数据库,因为我想要一个没有太多组件的独立且易于使用的网站。)

现在,我有这个

var data = [{
        "id": 1,
        "oeuvre": "choppe",
        "type": "Objet d'art",
        "artist": "Etienne",
        "sheet": "<a href=\"desc.html\">fiche</a>",
        "dt": "01/01/2019"
      }, {
        "id": 2,
        "oeuvre": "montre",
        "type": "Orfèvrerie",
        "artist": "Etienne",
        "sheet": "<a href=\"desc.html\">fiche</a>",
        "dt": "01/01/2019"
      }]

我想要这样的东西:

var data = $.getJSON("json/data1.json")

但似乎找不到文件...

有人有主意吗?

预先感谢

最诚挚的问候

2 个答案:

答案 0 :(得分:1)

如果要使用本地文件,则需要使用FileReader。这意味着您需要手动选择json文件。

function readJsonFromLocal() {
    var file = document.getElementById("file");
    var fr = new FileReader();
    fr.readAsDataURL(file.files[0]);
    fr.onloadend = function (event) {    
        var strJson = atob(event.target.result.substring(event.target.result.indexOf("base64,") + 7));
        var jsonObj = JSON.parse(strJson);
    }
}

,您需要将json下载为字符串。这是下载的json代码:

function downloadJsonFile() {
    var a = $("</a>");
    var url = URL.createObjectURL(new Blob([JSON.stringify(jsonObj)], { type: 'text/json' }));
    $(a).attr("download", "System.json").attr("href", url);
}

答案 1 :(得分:0)

$。getJSON是异步的,因此您应该这样做:

$.getJSON("test.json", function(json) {
    console.log(json); // this will show the info it in firebug console
});