(python 3.13.0 기준)
import json
json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
print(json.dumps("\"foo\bar"))
>>"\"foo\bar"
print(json.dumps('\u1234'))
>>"\u1234"
print(json.dumps('\\'))
>>"\\"
print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
>>{"a": 0, "b": 0, "c": 0}
from io import StringIO
io = StringIO()
json.dump(['streaming API'], io)
io.getvalue()
>>'["streaming API"]'
import json
json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
>>'[1,2,3,{"4":5,"6":7}]'
import json
print(json.dumps({'6': 7, '4': 5}, sort_keys=True, indent=4))
>>{
"4": 5,
"6": 7
}
import json
def custom_json(obj):
if isinstance(obj, complex):
return {'__complex__': True, 'real': obj.real, 'imag': obj.imag}
raise TypeError(f'Cannot serialize object of {type(obj)}')
json.dumps(1 + 2j, default=custom_json)
import json
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
>>['foo', {'bar': ['baz', None, 1.0, 2]}]
json.loads('"\\"foo\\bar"')
>>'"foo\x08ar'
from io import StringIO
io = StringIO('["streaming API"]')
json.load(io)
>>['streaming API']
import json
def as_complex(dct):
if '__complex__' in dct:
return complex(dct['real'], dct['imag'])
return dct
json.loads('{"__complex__": true, "real": 1, "imag": 2}',
object_hook=as_complex)
>> (1+2j)
import decimal
json.loads('1.1', parse_float=decimal.Decimal)
>>Decimal('1.1')
import json
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, complex):
return [obj.real, obj.imag]
# Let the base class default method raise the TypeError
return super().default(obj)
json.dumps(2 + 1j, cls=ComplexEncoder)
>>'[2.0, 1.0]'
ComplexEncoder().encode(2 + 1j)
>>'[2.0, 1.0]'
list(ComplexEncoder().iterencode(2 + 1j))
>>['[2.0', ', 1.0', ']']