2014-12-01 61 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评论,而如果这也适用于你。

相关问题