【发布时间】:2012-06-29 04:11:09
【问题描述】:
所以我正在生成一个可能很长的 JSON 字符串,用于 Sendgrid 的 SMTP API。因为它作为 SMTP 标头,所以它应该有一个最大行长度(推荐 72,但绝对不超过 1000)。末尾的文档中描述了一种简单的解决方案:
http://docs.sendgrid.com/documentation/api/smtp-api/developers-guide/
他们建议这样做:
$js =~ s/(.{1,72})(\s)/$1\n /g;
但我不喜欢这样,因为它可能会在空格有意义的字符串中拆分。此外,当空间很少且相距很远时,性能似乎非常糟糕。
现在我正在使用 Ruby,我可以执行以下操作:
JSON.generate(@hash, options)
选项提供不同的格式选项,记录在http://flori.github.com/json/doc/classes/JSON.html#method-i-generate。但是这些都没有给我我想要的东西,即每隔一段时间带有换行符的简洁 JSON。
有什么想法吗?
【问题讨论】:
-
为什么不扫描
"对的行并在其末尾添加新行?这需要编写一个非常深入的正则表达式来计算字符和行长,但会解决你的问题。 -
我想过这个,但我不想仅仅为了这个目的而写一个 JSON 解析器。正则表达式是不够的,它必须是一个完整的解析器。我也不想仅仅为了这个小用例而包含另一个 JSON 库,但如果我已经包含了一个 SAX 样式解析器,我认为它会提供最好的控制来做我想做的事。
-
什么在消耗 JSON?如果您控制该代码,也许首先对 JSON 进行 Base64 编码可以解决问题。然后,您可以根据需要拆分 Base64 编码的 JSON,通过 SMTP 发送,然后在另一端解码。
-
你能确定包含有意义空格的字符串永远不会超过 1000 个字符吗?
-
这是在这种情况下帮助我的解决方案:stackoverflow.com/questions/15992281/…
标签: ruby json smtp sendgrid email-headers