JSON در پایتون

JSON یک فرمت متنی است که برای ذخیره و انتقال داده‌ها استفاده می‌شود.

JSON یک شئ جاوااسکریپت و مخفف JavaScript Object Notation است.

در پایتون از JSON همانند ماژول‌ها استفاده می کنند.

استفاده از JSON در پایتون

JSON یکی از ماژول‌های آماده در پایتون است و فقط باید آن را import کنیم.

import json

نکته: برای آشنایی بیشتر به درس ماژول پایتون مراجعه کنید.

تبدیل JSON به پایتون

با استفاده از متد ()loads می‌توانیم رشته‌ حاوی شئ جاوااسکریپت را به دیکشنری پایتون تبدیل کنیم.

برای مثال یک رشته به نام x که حاوی یک دیکشنری است، ایجاد می کنیم.

x = '{"name":"Alireza", "age":20, "country":"iran"}'

متغیر y را ایجاد می کنیم و متغیر x را به فرمت json تبدیل می کنیم.

y = json.loads(x)

در آخر نوع متغیر y را چاپ می کنیم که مشاهده می کنیم به یک دیکشنری تبدیل شده است.

print(type(y))

نکته: برای آشنایی بیشتر با دیکشنری‌ها، به بخش دیکشنری‌ها در پایتون مراجعه کنید.

تبدیل پایتون به JSON

برعکس بخش قبل، اگر یک داده پایتون(دیکشنری) را بخواهید به داده جاوااسکریپت تبدیل کنید، باید از متد ()dumps استفاده کنید.

برای مثال یک دیکشنری ایجاد میکنیم.

x = {
  "name": "Alireza",
  "age": 20,
  "country": "Iran"
}

این دیکشنری را با متد ()dumps به یک رشته جاوااسکریپتی تبدیل می کنیم.

y = json.dumps(x)

نوع متغیر y را برمی گردانیم.

print(type(y))

داده های قابل تبدیل به JSON در پایتون

از طریق متد ()json.dumps، تمام داده‌های زیر امکان تبدیل به دادۀ JSON را دارند:

نوع داده نحو نوشتار
دیکشنری - dict json.dumps({"name": "Alireza", "age": 20}
لیست - list json.dumps(["apple", "bananas"])
تاپل - tuple json.dumps(("apple", "bananas")
رشته - str (json.dumps("Hello")
اعداد صحیح - int json.dumps(57)
اعداد اعشاری - float json.dumps(23.64)
بولی(boolean) (json.dumps(True)
None json.dumps(None)

معادل JSON در پایتون

هنگامی که شما داده‌هایی را از پایتون به JSON تبدیل می‌کنید، این داده‌های پایتون به معادل جاوااسکریپتی(همان JSON) خود تبدیل می‌شوند.

پایتون JSON
dict Object
list Array
tuple Array
str String
int Number
float Number
True true
False false
None null

فرمت کردن نتیجه json در پایتون

خروجی JSON در حالت عادی غیر مرتب و ناخوانا است، متد ()json.dumps پارامتر‌هایی دارد که این مشکل را حل می‌کند.

یکی از این پارامتر‌ها indent است، که در کد فاصله‌هایی را ایجاد می‌کند تا خواندن آن آسان‌تر شود.

dumps(x, indent=4)

همچنین برای شئ‌ها می‌توانیم جدا کننده(seperator) معرفی کنیم.

مقدار پیشفرض جداکننده (", ", ": ") است، که به معنای کاما(,) و یک فاصله برای جدا کردن هر داده و دونقطه (:) و یک فاصله برای مقداردهی به هر کلید است.

json.dumps(x, indent=4, separators=(". ", " = "))

مرتب‌سازی نتیجه json در پایتون

متد ()json.dumps پارامتر‌های دیگری برای مرتب‌سازی کلید‌های شئ دارد.

این پارامتر sort_key است که با پذیرفتن مقدار True نتیجه خروجی را مرتب سازی می کند.

برای مثال کلیدهای یک دیکشنری را براساس حروف الفبا مرتب سازی می کند.

json.dumps(x, indent=4, sort_keys=True)

خلاصه درس

در این درس با ماژول JSON و کاربرد آن آشنا شدید.

توسعه دهندگان
علیرضا چمنی