使用最大行长度简洁地序列化JSON

时间:2012-06-27 16:39:29

标签: ruby json smtp sendgrid email-headers

所以我正在生成一个可能冗长的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。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

options = {
  indent:'',
  space:"\n",
  space_before:"\n",
  object_nl:"\n",
  array_nl:"\n",
}

这会在每个地方添加换行符,这样做不会影响JSON的语义,并禁用任何缩进。

这不是简洁而不是人性化,但换行只是一个额外的角色,所以拥有很多它们不会以任何真实的方式影响性能。它还为您提供尽可能短的行,而不会影响字符串的内容。您应该检查这些以确保它们都在长度限制之内。