我正在解析一个作为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。所以现在,我有:
- 文本
- 编码文本到Uint8
- Lambda函数返回
- 从Uint8解码为文本
- 可作为无转义字符轻松处理
之前,我跳过了第2步。因此Lambda以默认方式对文本进行编码。