✍️ برای ساخت متن JSON از داده پایتونی، json.dumps را داریم. حالت پیشفرض میتواند نویسههای فارسی را با escapeهای یونیکد بنویسد. این نمایش هنوز معتبر است و بعد از خواندن دوباره همان فارسی را میدهد، اما برای خواندن مستقیم گزارش انسانی راحت نیست. گزینه ensure_ascii=False اجازه میدهد نویسهها در خود متن دیده شوند.
مثلاً داده {'city':'رشت'} را میتوان به متن JSON خوانا تبدیل کرد، بدون اینکه نوع داده یا معنی آن عوض شود. این قطعه را بررسی کن:
import json
data = {'name': 'سارا'}
text = json.dumps(data, ensure_ascii=False)
print(text)
خروجی یک رشته JSON است؛ کلید و مقدار رشتهای باید با نقلقول دوتایی دیده شوند. ensure_ascii=False به معنی حذف نقلقول یا ترجمه نام کلید نیست. همچنین این گزینه جای encoding='utf-8' هنگام نوشتن فایل را نمیگیرد؛ یکی مربوط به نمایش متن JSON است و دیگری مربوط به ذخیره نویسهها در فایل.
خطای رایج، استفاده از str(data) به جای dumps است؛ آن نمایش پایتونی است و برای مقدارهایی مثل True یا None قواعد JSON را ندارد. گزینه درست باید هم فارسی خوانا و هم ساختار JSON معتبر داشته باشد.
فعالیت شما
خروجی print را برای json.dumps همین دیکشنری با ensure_ascii=False انتخاب کن؛ فارسی مستقیم دیده میشود و نقلقول JSON دوتایی است.