module ERB::Util

def json_escape(s)

# => {name:john,created_at:2010-04-28T01:39:31Z,id:1}
json_escape('{"name":"john","created_at":"2010-04-28T01:39:31Z","id":1}')

valid JSON. In particular double quotes are removed:
Note that after this operation is performed the output is not

# => is a \u003E 0 \u0026 a \u003C 10?
json_escape('is a > 0 & a < 10?')

using \uXXXX JavaScript escape sequences for string literals:
A utility method for escaping HTML entities in JSON strings
def json_escape(s)
  result = s.to_s.gsub(JSON_ESCAPE_REGEXP, JSON_ESCAPE)
  s.html_safe? ? result.html_safe : result
end