from __future__ import unicode_literals
from codecs import getwriter
from io import open
from os import path
from tempfile import gettempdir
from json import dump
with open(path.join(gettempdir(), 'bar'), 'wt', encoding='utf8') as f:
dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False, encoding='utf8')
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCgpmcm9tIGNvZGVjcyBpbXBvcnQgZ2V0d3JpdGVyCmZyb20gaW8gaW1wb3J0IG9wZW4KZnJvbSBvcyBpbXBvcnQgcGF0aApmcm9tIHRlbXBmaWxlIGltcG9ydCBnZXR0ZW1wZGlyCmZyb20ganNvbiBpbXBvcnQgZHVtcAoKd2l0aCBvcGVuKHBhdGguam9pbihnZXR0ZW1wZGlyKCksICdiYXInKSwgJ3d0JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOgogICAgZHVtcCh7J2Zvbyc6eydiYXInOiA1fX0sIGdldHdyaXRlcigndXRmOCcpKGYpLCBlbnN1cmVfYXNjaWk9RmFsc2UsIGVuY29kaW5nPSd1dGY4JykK
Traceback (most recent call last):
File "prog.py", line 10, in <module>
dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False, encoding='utf8')
File "/usr/lib/pypy/lib-python/2.7/json/__init__.py", line 196, in dump
fp.write(chunk)
File "/usr/lib/pypy/lib-python/2.7/codecs.py", line 370, in write
self.stream.write(data)
TypeError: unicode argument expected, got 'str'