我是Javascript和JSON世界的新手。我想知道如何将传入的Uint8Array data()转换为JS对象? 请帮忙/指点。这是我作为实验所做的。
// arr is uint8Array incoming data
function myConvertFunc(arr) {
let str = "";
for (var i=0; i<arr.byteLength; i++) {
str += String.fromCharCode(arr[i]);
}
// Say, 'str' at this step looks like below :
/* {"type": "newEvent", "content": {"rec": [{"id1": "1", "event": "3A=","payload": "EZm9ydW0ub="}]}} */
var serializedData = JSON.stringify(str);
let message = JSON.parse(serializedData);
switch (message.type) {
case "newEvent":
log("In newEvent");
break;
.
.
.
default:
log("undefined message type");
}
}
与我的理解相反,我的日志中会显示默认案例日志:“未定义的邮件类型”。有人可以帮我解决我的错误吗?
答案 0 :(得分:4)
var serializedData = JSON.stringify(str); let message = JSON.parse(serializedData);
这意味着如果没有str === serializedData
(或至少两个看起来相同的对象)的错误。
说,这一步的'str'如下所示:
{"type": "newEvent", "content": {"rec": [{"id1": "1", "event": "3A=","payload": "EZm9ydW0ub="}]}}
现在,如果str
是JSON字符串,那么您只需要
var message = JSON.parse(str);
目前,您进行了JSON编码,然后对JSON字符串进行了编码,结果message
再次成为字符串,其type
属性为undefined
。