Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.stringify一个带有blob的对象_Javascript_Json_Libsox - Fatal编程技术网

Javascript JSON.stringify一个带有blob的对象

Javascript JSON.stringify一个带有blob的对象,javascript,json,libsox,Javascript,Json,Libsox,我有一个物体,里面有一个音频块。当我在对象上调用JSON.stringify时,blob消失了。如何字符串化对象中的二进制blob 音频blob来自,在本例中为mime类型“audio/wav” let blob = this/soxElem.getBlob(); let object = { audio: blob, name: "hi" } console.log(JSON.stringify(object)) 控制台显示{audio:{},名称:“hi”}。

我有一个物体,里面有一个音频块。当我在对象上调用JSON.stringify时,blob消失了。如何字符串化对象中的二进制blob

音频blob来自,在本例中为mime类型“audio/wav”

let blob = this/soxElem.getBlob();
let object = {
  audio: blob,
  name: "hi"
}

console.log(JSON.stringify(object))

控制台显示{audio:{},名称:“hi”}。blob消失了。

一种方法是将其转换为JSON可以处理的数组:

let ab = await this.soxElem.getBlob().arrayBuffer();
let object = {
  audio: Array.from(new Uint8Array(ab)),
  name: "hi"
}
在接收端(例如,使用Node.js)将其解码如下:

let binaryData = Buffer.from(data.audio);

可能是base64 encode它可能是,blob是一种数据类型,您正在返回字符串datatype blob没有消失,它只是一个没有可枚举属性的对象:
{}
。你期望得到什么结果?JSON没有二进制数据的类型。如果要将该数据发送到服务器,最好从一开始就将其作为多部分发送。这种对JSON的编码甚至比base64编码还要大,base64编码已经比它所表示的二进制数据大了约37%。你认为BTER是什么?