json - 如何读取无效的 JSON 格式亚马逊 firehose

标签 json ruby regex amazon-s3 amazon-kinesis-firehose

我遇到了这个最可怕的场景,我想读取 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

除此之外,它略有改进,以使其更简单..因为您可以使用整数和普通值..由于双重捕获组,字符串文字中的任何内容都将被忽略。

https://regex101.com/r/kPSc0i/1

关于json - 如何读取无效的 JSON 格式亚马逊 firehose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51315637/

相关文章:

java - fastxml jackson 2.0+ 和 MixIn

ruby - "HTTPI tried to user the httpi adapter"使用 Savon SOAP 库时出错

java - 用于替换字符串中除一个字符外的所有字符的正则表达式

java - 使用正则表达式将字符串拆分为多个字符串

价格的正则表达式?

php - 将值从 PHP 传递到 Javascript 的权威方法

javascript - 您可以合理期望在客户端解码的最多 JSON 是多少

ruby - 在 Mechanize (Ruby)中,如何登录然后抓取?

ios - 使用 NSJSONSerialization 将 NSString 转换为 JSON 不起作用

ruby - OptionParser 的 make_switch 错误为 '-?'