2014-12-01 159 views
2

我有一個Javascript對象,它將由一個非循環對象層次結構與參數和子對象組成。這些對象中的一些可能會保存從文件加載的二進制數據或通過XHRs接收的二進制數據(如果Blob,ArrayBuffer或其他)尚未定義。JSON.stringify或如何將二進制數據序列化爲base64編碼的JSON?

通常我會使用JSON.stringify()將其序列化爲JSON,但是如何指定二進制數據將以base64編碼?

然後你會推薦我什麼二進制數據對象(Blob,ArrayBuffer,...)?

編輯:其他數據格式比純JSON不是一個選項。

+5

'JSON.stringify'接受第二個參數,您可以使用該參數爲特定值定義自己的轉換:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/字符串化#參數 – 2014-12-01 16:22:30

回答

3

JSON.stringify確實奏效了兩種可能的解決方案:

一)打電話來決定如何序列化值的替代品的功能。

function replacer(key, value) { 
    if (typeof value === "string") { 
    return undefined; 
    } 
    return value; 
} 

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; 

var jsonString = JSON.stringify(foo, replacer); 

b)中定義該對象的toJSON()成員函數。

var obj = { 
    foo: 'foo', 
    toJSON: function() { 
    return '{ "foo": "' + + '" }'; 
    } 
}; 
JSON.stringify(obj);  // '{ "foo": "Zm9v" }' 

提高this評論,而如果這也適用於你。

相關問題