【发布时间】:2016-07-31 08:16:46
【问题描述】:
这是什么物体? 我正在尝试制作模拟数据以测试应用程序,这就是我的一个假数据的样子。 如何保存这个模拟数据?
我只能想到使用JSON.stringify 函数并将结果复制保存为字符串。显然,在我这样做之后,我将无法访问原始对象的属性。
有什么方法可以将此 JSONObject 写入文件并稍后访问其属性?
【问题讨论】:
标签: javascript json file
这是什么物体? 我正在尝试制作模拟数据以测试应用程序,这就是我的一个假数据的样子。 如何保存这个模拟数据?
我只能想到使用JSON.stringify 函数并将结果复制保存为字符串。显然,在我这样做之后,我将无法访问原始对象的属性。
有什么方法可以将此 JSONObject 写入文件并稍后访问其属性?
【问题讨论】:
标签: javascript json file
JSON.stringify() 返回一个字符串。要创建一个可以再次访问其属性的对象,您需要将该字符串传递给JSON.parse()。
另外值得注意的是,如果您保存的对象中有任何功能,它们将不会被保存。
【讨论】:
在您的代码中,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);
});
【讨论】:
可能使用本地存储。
localStorage.setItem("MYMockData", JSON.stringify(fakeData));
var fakeDataRetrived = JSON.parse(localStorage.getItem("MYMockData"));
【讨论】: