code: def htmlsafe_json_dumps(obj, dumper=None, **kwargs):
      
      if dumper is None:
          dumper = json.dumps
      rv = dumper(obj, **kwargs) \
          .replace(u'<', u'\\u003c') \
          .replace(u'>', u'\\u003e') \
          .replace(u'&', u'\\u0026') \
          .replace(u"'", u'\\u0027')
      return Markup(rv)
docs: Works exactly like :func:`dumps` but is safe for use in ``<script>``
      tags.  It accepts the same arguments and returns a JSON string.  Note that
      this is available in templates through the ``|tojson`` filter which will
      also mark the result as safe.  Due to how this function escapes certain
      characters this is safe even if used outside of ``<script>`` tags.
  
      The following characters are escaped in strings:
  
      -   ``<``
      -   ``>``
      -   ``&``
      -   ``'``
  
      This makes it safe to embed such strings in any place in HTML with the
      notable exception of double quoted attributes.  In that case single
      quote your attributes or HTML escape it in addition.