将数据从uint8array解析为字符串到json

时间:2017-05-19 18:44:43

标签: javascript json node.js parsing

任何人都知道如何正确解析Uint8Array(基本上只是从Buffer ..继承)到一个有效的json对象?使用Node.js作为后端。我上传文件,端点将其作为Uint8Array接收。真的,这只是一个.json文件。因此,如果您使用Array和.toString(),它会像这样吐出内容:

bytes.toString()
""someObject": {
    "foo": "bar",
    "baz": {
        "qux": "quux"
    }
}
"

现在,当我尝试通过JSON.parse运行它时,由于无效字符而失败。所以我可以很容易地看到以下内容:

JSON.stringify(bytes.toString())
""\"someObject\": {\r\n\t\"foo\": \"bar\",\r\n\t\"baz\": {\r\n\t\t\"qux\": \"quux\"\r\n\t}\r\n}\r\n""

所以我必须删除所有这些选项卡,空格和换行符,以便将其解析为一个对象。所以我用以下方法做到了:

JSON.stringify(bytes.toString().replace(/\r/g, '').replace(/\t/g, '').replace(/\n/g, ''))
""\"someObject\": {\"foo\": \"bar\",\"baz\": {\"qux\": \"quux\"}}""

大!那里多余的垃圾都被删除了。所以现在我可以解析这件事。可是等等!它只会将其解析回字符串:

JSON.parse(JSON.stringify(bytes.toString().replace(/\r/g, '').replace(/\t/g, '').replace(/\n/g, '')))
""someObject": {"foo": "bar","baz": {"qux": "quux"}}"

这是因为开头和结尾的引号。所以...我想我可以简单地删除那些引号....

但是,有一种更简单的方法吗?看起来如此hacky做所有这些替换和字符串化回到解析。我在这里失踪的是什么?

所有我正在寻找的是一个实际的对象,使用以下格式:

{
    "someObject": {
        "foo": "bar",
        "baz": {
            "qux": "quux"
        }
    }
}

我知道这里有一些容易的东西我不知道。请帮助愚蠢的程序员将脸砸到键盘上! :)

1 个答案:

答案 0 :(得分:0)

您需要在类型化数组中编码的文本中添加一对外括号:

{ 
  "someObject": {
    "foo": "bar",
    "baz": {
      "qux": "quux"
    }
  }
}