Satu perbedaan penting dalam Python 2 adalah bahwa jika Anda menggunakan ensure_ascii=False
, dump
akan dengan benar menulis data yang dikodekan UTF-8 ke dalam file (kecuali jika Anda menggunakan string 8-bit dengan karakter diperluas yang bukan UTF-8):
dumps
di sisi lain, dengan ensure_ascii=False
dapat menghasilkan str
atau unicode
hanya tergantung pada jenis apa yang Anda gunakan untuk string:
Serialize obj ke str diformat JSON menggunakan tabel konversi ini. Jika sure_ascii False, hasilnya mungkin berisi karakter non-ASCII dan nilai kembaliannya bisa menjadi unicode
contoh .
(penekanan milikku). Perhatikan bahwa itu mungkin masih menjadi str
contoh juga.
Dengan demikian Anda tidak dapat menggunakan nilai baliknya untuk menyimpan struktur ke dalam file tanpa memeriksa format yang dikembalikan dan kemungkinan diputar unicode.encode
.
Hal ini tentu saja bukan perhatian yang valid di Python 3 lagi, karena tidak ada lagi kebingungan 8-bit / Unicode ini.
Adapun load
vs loads
, load
menganggap seluruh file sebagai satu dokumen JSON, jadi Anda tidak dapat menggunakannya untuk membaca beberapa dokumen JSON terbatas baris baru dari satu file.