Split a long JSON string into lines in Ruby
- by David J.
First, the background: I'm writing a Ruby app that uses SendGrid to send mass emails. SendGrid uses a custom email header (in JSON format) to set recipients, values to substitute, etc. SendGrid's documentation recommends splitting up the header so that the lines are shorter than 1,000 bytes.
My question, then, is this: given a long JSON string, how can I split it into lines < 1,000 so that lines are split at appropriate places (i.e., after a comma) rather than in the middle of a word?
This is probably unnecessary, but here's an example of the sort of string I'd like to split:
X-SMTPAPI: {"sub": {"pet": ["dog", "cat"]}, "to": ["test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com", "test@gmail.com", "anothertest@gmail.com"]}
Thanks in advance for any help you can provide!