summaryrefslogtreecommitdiff
path: root/simplejson/encoder.py
diff options
context:
space:
mode:
Diffstat (limited to 'simplejson/encoder.py')
-rw-r--r--simplejson/encoder.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/simplejson/encoder.py b/simplejson/encoder.py
index 5b9bda7..9a4c0c5 100644
--- a/simplejson/encoder.py
+++ b/simplejson/encoder.py
@@ -39,6 +39,10 @@ for i in [0x2028, 0x2029]:
FLOAT_REPR = repr
+class RawJSON(object):
+ def __init__(self, encoded_json):
+ self.encoded_json = encoded_json
+
def encode_basestring(s, _PY3=PY3, _q=u('"')):
"""Return a JSON representation of a Python string
@@ -464,6 +468,8 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
if (isinstance(value, string_types) or
(_PY3 and isinstance(value, binary_type))):
yield buf + _encoder(value)
+ elif isinstance(value, RawJSON):
+ yield buf + value.encoded_json
elif value is None:
yield buf + 'null'
elif value is True:
@@ -582,6 +588,8 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
if (isinstance(value, string_types) or
(_PY3 and isinstance(value, binary_type))):
yield _encoder(value)
+ elif isinstance(value, RawJSON):
+ yield value.encoded_json
elif value is None:
yield 'null'
elif value is True:
@@ -624,6 +632,8 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
if (isinstance(o, string_types) or
(_PY3 and isinstance(o, binary_type))):
yield _encoder(o)
+ elif isinstance(o, RawJSON):
+ buf + o.encoded_json
elif o is None:
yield 'null'
elif o is True: