22

I have written json code in string and i want to send it using xmlhttp as .json file. Is it possible to do it with blob?

var cleanScript = {
    'type': 'script',
    'api_key': api_key,
    'data': data,
    'inputs': inputs,
    'timeoutSeconds': timeoutSeconds
};
var jsonse = JSON.stringify(cleanScript, null, 2); 

Now json to blob?

1
  • Define "blob". The tag you've selected makes no sense in this context. Commented Oct 2, 2014 at 10:09

2 Answers 2

56

Try something like this

var cleanScript = {
    'type': 'script',
    'api_key': api_key,
    'data': data,
    'inputs': inputs,
    'timeoutSeconds': timeoutSeconds
};
var jsonse = JSON.stringify(cleanScript);
var blob = new Blob([jsonse], {type: "application/json"});
var url  = URL.createObjectURL(blob);

var a = document.createElement('a');
a.href        = url;
a.download    = "backup.json";
a.textContent = "Download backup.json";

document.getElementById('json').appendChild(a);
<div id="json"></div>
Sign up to request clarification or add additional context in comments.

Comments

1

Try the code below:

    var int2ByteArray = function(i, minByteCount) {
        var result = [],
            buf = code = +i,
            offsetCount = 0;
        while ((buf = code>>(8 * offsetCount)) || offsetCount < minByteCount) {
            buf = buf & 0xFF;
            ++offsetCount;
            result.push(buf);
        }
        return result.reverse();
    };

    var ascii2ByteArray = function(s) {

        if (!s) return 0;
        var result = [];
        [].map.call(s, function(c) {
            result = result.concat(int2ByteArray((typeof(c)).toLowerCase() == "number" ? c : c.charCodeAt(0)));
        });
        return result;
    };

    // You got the blob here, do whatever you want.
    var blob = new Blob(new Uint8Array(ascii2ByteArray(jsonse)), {type:"text/json"});

The matrix is to convert a string(stringfied by JSON.stringify) in to a Uint8Array that could be used making a blob. I happened make something like that before, hope it's useful.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.