2014-10-02 88 views
2

我已經在字符串中編寫了json代碼,並且我想使用xmlhttp作爲.json文件發送它。是否有可能用blob做到這一點?使用blob創建json文件

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

現在json到blob?

+0

定義「blob」。您選擇的標籤在這種情況下沒有意義。 – Quentin 2014-10-02 10:09:27

回答

11

嘗試這樣的事情

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> 
1

嘗試下面的代碼:

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"}); 

矩陣是一個字符串(由JSON.stringify stringfied)在轉換成可使用的Uint8Array做一個blob。 我曾經做過類似的事情,希望它有用。