5

そのため、Sendgrid の SMTP API で使用するために、潜在的に長い JSON 文字列を生成しています。これは SMTP ヘッダーとして使用されるため、行の長さは最大にする必要があります (推奨は 72 ですが、絶対に 1000 を超えてはなりません)。ドキュメントの最後にある単純な解決策の 1 つが説明されています。

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 です。

何か案は?

4

1 に答える 1

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

これにより、JSON のセマンティクスに影響を与えないすべての場所に改行が配置され、インデントが無効になります。

簡潔ではなく、人間に優しくもありませんが、改行は 1 つの余分な文字にすぎないため、多くの改行があっても実際のパフォーマンスには影響しません。また、文字列の内容に影響を与えることなく、可能な限り短い行を提供します。それらがすべて長さの制限を超えていることを確認するために、おそらくそれらをチェックする必要があります。

于 2013-01-19T20:28:08.467 に答える