2

我有一堆 JSON 对象存储在 JQuery 的一个数组中。有没有一种简单的方法可以将它们重写为我本地机器的 JSON 文本文件?

谢谢!

4

3 回答 3

5

您可以使用数据 URI 方案将 JSON 转换为可以下载的“URL”,即

/* Firstly you'll need a javascript library which can encode data to base 64
 * http://archive.plugins.jquery.com/project/base64  - jQuery Plugin
 * http://www.webtoolkit.info/javascript-base64.html - Collection of functions
 * http://stackoverflow.com/a/6740027/451672         -     ''     ''     "
 */

/* Now we must convert the JSON to text, which can be done with the 
   JSON.stringify() method
 * http://msdn.microsoft.com/en-us/library/cc836459(v=vs.85).aspx
 */

var data = JSON.stringify(myObject);

/* Now we convert the data to a Data URI Scheme, which must be Base64 encoded
   make sure you use the appropriate method to Base64 encode your data depending
   on the library you chose to use.
 * application/octet-stream simply tells your browser to treat the URL as 
   arbitrary binary data, and won't try to display it in the browser window when 
   opened.
 */
var url = "data:application/octet-stream;base64," + Base64.encode(data);

/* To force the browser to download a file we need to use a custom method which
   creates a hidden iframe, which allows browsers to download any given file 
 * http://stackoverflow.com/a/3749395/451672
 */
var downloadURL = function(url)
{
    var iframe;
    iframe = document.getElementById("hiddenDownloader");
    if (iframe === null)
    {
        iframe = document.createElement('iframe');  
        iframe.id = "hiddenDownloader";
        iframe.style.display = "none";
        document.body.appendChild(iframe);
    }
    iframe.src = url;   
}

/* Now downloading is simple as executing the following code, make sure that
   the DOM is not modified until after the page has finished loading!
 */
window.onload = function()
{
    var link = document.getElementById("downloadJSON");
    link.onclick = function()
    {
        downloadURL(url);
    }
}

jsFiddle:http: //jsfiddle.net/cQV7X/

于 2012-04-14T05:16:55.360 回答
4
console.log(JSON.stringify([1,2,3,4,5]));

打开 gedit 或其他文本编辑器。从控制台复制。粘贴到文件中。另存为 array.json。

编辑 Chrome 支持copy,因此您可以这样做copy("foobar"),并且“foobar”将出现在您的剪贴板上。

于 2012-04-14T03:56:15.383 回答
1

有一个 jQuery 插件jQuery.twFile允许您读取和写入本地文件。

于 2012-04-14T03:56:42.563 回答