因此,我在Sendgrid的SMTP API中使用了一個可能很長的JSON字符串。因爲它是作爲SMTP標題發送的,所以它應該具有最大行長度(建議72,但絕對不超過1000)。一個天真的解決方案是在文檔中,在結束描述:簡單地用最大行長度序列化JSON
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。
任何想法?
爲什麼不掃描'''對的行並在這些行的末尾添加新行?這需要編寫一個非常深入的正則表達式來計算字符和行的長度,但是可以解決您的問題 – Swift
I考慮到這一點,但我不想爲此寫一個JSON解析器,Regexp還不夠,它必須是一個完整的解析器。我也不想僅包含另一個JSON庫這是一個小用例,但是如果我已經包含了一個SAX樣式解析器,我認爲它可以爲我所需要的做出最好的控制 – gtd
什麼在消耗JSON?如果你控制了這個代碼,那麼首先編碼JSON的Base64解決這個問題,然後你可以拆分Base64編碼的JSON,然後通過SMTP發送,然後在另一端對其進行解碼。 –