我遇到了这个最可怕的场景,我想读取 kinesis firehose 在我们的 S3 上创建的文件。
Kinesis firehose 创建的文件并不是每个 json 对象都在一个新行上,而是一个 json 对象串联文件。
{"param1":"value1","param2":numericvalue2,"param3":"嵌套 {bracket}"}{"param1":"value1","param2":numericvalue2,"param3":"嵌套{括号}"}{"param1":"value1","param2":numericvalue2,"param3":"嵌套{括号}"}
现在这是普通 JSON.parse 不支持的场景,我尝试使用以下正则表达式:.scan(/({((\".?\":.?)* ?)})/)
但扫描似乎只适用于没有嵌套括号的场景。
有人知道解决这个问题的工作/更好/更优雅的方法吗?
最佳答案
最初的 anwser 中的一个是针对不带引号的 json 的,这种情况有时会发生。这个:
({((\\?\".*?\\?\")*?)})
适用于带引号的 json 和不带引号的 json
除此之外,它略有改进,以使其更简单..因为您可以使用整数和普通值..由于双重捕获组,字符串文字中的任何内容都将被忽略。
关于json - 如何读取无效的 JSON 格式亚马逊 firehose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51315637/