不带转义符的UINT8数组到字符串



我正在解析一个作为HTML文档的Uint8数组。它包含一个脚本标记,该标记又包含我想要解析的JSON数据。

我首先将数组转换为文本:

data = Buffer.from(str).toString('utf8')

然后,我搜索了script标记,并提取了包含JSON:的字符串

... {"phrase":"Go to "California"","color":"red","html":"<div class="myclass">Ok</div>"} ...

然后我做了一个替换来清理它。

data = data.replace(/\"/g, """).replace(/\/g, "").
{"phrase":"Go to "California"","color":"red","html":"<div class="myclass">Ok</div>"}

我尝试使用JSON.parse((进行解析,但由于属性中包含引号,所以出现了错误。有没有一种方法可以使用正则表达式来进一步处理这个问题?或者图书馆?我正在与Cheerio合作,所以如果有帮助的话可以使用它。

如果要解析JSON,转义符是必需的。嵌入的引号需要进行双转义,因此提取的文本甚至不是有效的JSON。

"{"phrase":"Go to \"California\"","color":"red","html":"<div class=\"myclass\">Ok</div>"}"

或者,使用单引号:

'{"phrase":"Go to \"California\"","color":"red","html":"<div class=\"myclass\">Ok</div>"}'

谢谢。

经过更多的修改,我意识到在传输数据进行进一步处理之前,我应该在源代码(Lambda函数(上将数据编码到Uint8。所以现在,我有:

  1. 文本
  2. 编码文本到Uint8
  3. Lambda函数返回
  4. 从Uint8解码为文本
  5. 可作为无转义字符轻松处理

之前,我跳过了第2步。因此Lambda以默认方式对文本进行编码。

最新更新