无法在JavaScript中获取ArrayBuffer对象的值

5

我有一个 ArrayBuffer 对象,需要将它转换为 String,然后再转换为 JSON,但是我无法从对象中获取 [Int8Array] 的值,尽管它显然存在。

enter image description here

我已经尝试了所有的变化形式,但它们都返回 undefined。

console.log(result);//Returns the array buffer
//Following methods all return undefined?
console.log(result["[[Int8Array]]"]);
console.log(result[[[Int8Array]]]);
console.log(result[[["Int8Array"]]]);
console.log(result[Int8Array]);
console.log(result["Int8Array"]);

我怎样才能获取对象中明确可用的所有Int8Array或UInt8Array值?

你应该能够使用 console.log(result[0]) 等方式获取单个值。 - user5734311
1
那个不起作用,而且总是返回未定义。下面的评论是正确的,我需要为这些值实例化一个新的ArrayBuffer。 - Sven0567
https://dev59.com/emgu5IYBdhLWcg3wHzsX#11555049 - user5734311
2个回答

8
您可以使用textDecoder,它接受ArrayBuffer(以及uint8array),而无需处理Uint8array:
var str = new TextDecoder().decode(arrayBuffer)
var json = JSON.parse(str)

如果你想直接获取JSON格式数据

var json = await new Response(arrayBuffer).json()

7
你需要实例化一个新的Uint8Array来获取它们的值,不能直接使用ArrayBuffer实例访问它们。

var buf = new ArrayBuffer(8);
var int8view = new Uint8Array(buf);
console.log(int8view)

JSFiddle : https://jsfiddle.net/v8m7pjqb/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接