【问题标题】:Save JSONObject保存 JSONObject
【发布时间】:2016-07-31 08:16:46
【问题描述】:

这是什么物体? 我正在尝试制作模拟数据以测试应用程序,这就是我的一个假数据的样子。 如何保存这个模拟数据?

我只能想到使用JSON.stringify 函数并将结果复制保存为字符串。显然,在我这样做之后,我将无法访问原始对象的属性。

有什么方法可以将此 JSONObject 写入文件并稍后访问其属性?

【问题讨论】:

    标签: javascript json file


    【解决方案1】:

    JSON.stringify() 返回一个字符串。要创建一个可以再次访问其属性的对象,您需要将该字符串传递给JSON.parse()

    另外值得注意的是,如果您保存的对象中有任何功能,它们将不会被保存。

    【讨论】:

    • 这正是我想要做的。我正在尝试保存一个包含函数的对象,我想稍后再使用这些函数。这根本不可行吗?
    • 如果对象中有函数,那么希望它有一个构造函数,您可以调用它来创建更多实例。检查developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    【解决方案2】:

    在您的代码中,obj 是一个 javascript 对象

    您可以使用 blob (https://developer.mozilla.org/en-US/docs/Web/API/Blob) 和 HTML5 下载 API 来执行所需的操作:

    var json = JSON.stringify(obj);
    var blob = new Blob([json], {type: "application/json"});
    var url  = URL.createObjectURL(blob);
    
    var a = document.createElement('a');
    a.download    = "mydata.json";
    a.href        = url;
    a.textContent = "Download mydata.json";
    

    您可以稍后使用 XMLHttpRequest GET 请求加载该数据并访问它的属性:

    function loadJSON(callback) {   
    
        var getobj = new XMLHttpRequest();
        getobj.overrideMimeType("application/json");
        getobj.open('GET', 'mydata.json', true); // Replace 'mydata' with the path to your file
        getobj.onreadystatechange = function () {
              if (getobj.readyState == 4 && getobj.status == "200") {
                    // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
                callback(getobj.responseText);
              }
        };
        getobj.send(null);  
     }
    
     loadJSON(function(response) {
      // Parse JSON string into object
        var savedData = JSON.parse(response);
     });
    

    【讨论】:

    • 我很困惑
    • 对什么感到困惑?
    • 一切……我完全不明白
    • 我正在尝试保存一个包含函数的对象。这会这样做吗?我不明白
    • 您应该浏览我发布的 blob 链接。此外,您应该阅读有关 GET 请求的信息。通过外部文件获取数据的最有效方式是仅 GET 请求。是的,它会在文件中保存包括函数在内的所有内容。
    【解决方案3】:

    可能使用本地存储。

       localStorage.setItem("MYMockData", JSON.stringify(fakeData));
    
       var fakeDataRetrived = JSON.parse(localStorage.getItem("MYMockData"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多