12

我是 Javascript 和 JSON 世界的新手。我想知道如何将传入的 Uint8Array 数据 () 转换为 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");
  }
}

与我的理解相反,默认案例日志:“未定义的消息类型”显示在我的日志中。有人可以帮我找出我的错误吗?

4

1 回答 1

5
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 编码,然后对 JSON 字符串进行了解码,结果message又是字符串,其type属性为undefined.

于 2013-05-24T00:19:33.153 回答