我需要将Javascript对象保存到文件中,以便它可以轻松地重新加载到变量中,进行修改并最终重新保存。这在Javascript中是否可行,如果是的话,最好的方法是什么。例如,如果我有:将Javascript对象保存到文件
o = {"test": 2};
如何将其保存到文件,加载,修改并保存它?完全像Python中的pickle
。
谢谢。
我需要将Javascript对象保存到文件中,以便它可以轻松地重新加载到变量中,进行修改并最终重新保存。这在Javascript中是否可行,如果是的话,最好的方法是什么。例如,如果我有:将Javascript对象保存到文件
o = {"test": 2};
如何将其保存到文件,加载,修改并保存它?完全像Python中的pickle
。
谢谢。
如果你的字面意思是一个文件,这是不可能的客户端。但是,如果它只是您想要存储和回忆的数据,则可以使用cookie(如果它很小)。 http://www.sitepoint.com/how-to-deal-with-cookies-in-javascript/
如果它更大,则必须使用HTML5 LocalStorage。但是,这只适用于较新的浏览器。
你可以这样做是为了访问计数器:
//try to load the data
var o = localStorage.getItem("mydata");
//if the data is empty set the data
if(!o) o = {"test": 0};
//increment the test value inside of o by one each time
o.test++;
//save the data to local storage
localStorage.setItem("mydata", JSON.stringify(o));
http://diveintohtml5.info/storage.html
再次,这只会在现代的浏览器,如Chrome浏览器。
传统的方法是通过AJAX将其发送到PHP编写的,Python和Ruby,Java的,等服务器端脚本...
尽管所有的答案,相反,这确实是可能的。但它受浏览器支持的限制。您可以使用Chrome浏览器的最新版本新FileSystem APIs等:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTENT, 1024, function(fs) {
fs.root.getFile('mystorage.txt', {create: true, exclusive: true}, function(file) {
file.createWriter(function(writer) {
var blob = new Blob(["putdatahere"], {type: 'text/plain'});
writer.write(blob);
});
});
}, function() {
console.log("Could not access file system");
});
既然你只需要为自己使用的文件,这个沙盒的方法会奏效。还有几个环节需要跳过(请求配额,创建Blob
对象),但链接文章会覆盖这些对象,并且将取决于您的要求。
值得注意的是你发布的链接:“2014年4月,它在public-webapps上宣布Filesystem API规范没有被其他浏览器考虑。目前,该API是Chrome特定的,并且不太可能通过其他浏览器,并且不再通过W3C进行标准化。“ – MattSidor
只用javascript就不可能。最好的办法是使用localStorage,但这不是永久存储 –
您需要序列化对象并将结果字符串发送到能够创建文件的脚本语言(如Java,PHP等)。 – Benedikt
为什么你想开火......?不可能重新保存 –