Michael
Michael

Reputation: 7377

Write JSON to text file from JQuery

I have a bunch of JSON objects stored in an array in JQuery. Is there an easy way to rewrite them to a JSON text file to my local machine?

Thanks!

Upvotes: 2

Views: 17007

Answers (3)

uadnal
uadnal

Reputation: 11425

console.log(JSON.stringify([1,2,3,4,5]));

Open gedit or other text editor. Copy from console. Paste in file. Save as array.json.

EDIT Chrome supports copy so you could do copy("foobar") and "foobar" will be on your clipboard.

Upvotes: 4

Randy the Dev
Randy the Dev

Reputation: 26690

You can use a Data URI Scheme to convert the JSON to an "URL" which can be then downloaded, i.e.

/* 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/

Upvotes: 5

Bill
Bill

Reputation: 25555

There's a jQuery plugin jQuery.twFile that allows you to read and write to a local file.

Upvotes: 1

Related Questions