javascript:如何将Uint8Array数据转换为JS对象

时间:2013-05-24 00:01:26

标签: javascript json

我是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");
  }
}

与我的理解相反,我的日志中会显示默认案例日志:“未定义的邮件类型”。有人可以帮我解决我的错误吗?

1 个答案:

答案 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