ویدیو کار با فایل های json در پایتون
پیش نیاز: json چیست؟
در این ویدیو میبینیم که چطور میشه در پایتون با فایل های json کار کرد و یک API هم آماده کردم تا بتونیم اطلاعاتی رو که اون API با json برای ما میفرسته رو هندل کنیم. به API میتونید از اینجا دسترسی پیدا کنید.
# نوع داده JSON چیست؟
جیسان (json) فرمتی برای ذخیره داده ها است. معمولا از json برای انتقال داده بین سرور و مرورگر استفاده میشود. جیسان از همان ابتدای معرفی تبدیل به یک استاندار برای تبادل اطلاعات شد. نوع داده json ابتدا برای زبان برنامه نویسی جاوااسکریپت ایجاد شد اما به دلیل سادگی خوانایی برای انسان و ماشین، بعدا توسط دیگر زبان های برنامه نویسی نیز استفاده شد. دقت کنید که json تنها روش برای انتقال داده ها نیست، شما میتوانید از فرمت های دیگر مانند XML یا YAML نیز استفاده کنید.
ساختار json بسیار ساده است و در مثال زیر یک آبجکت json ایجاد کرده ایم:
{
"name": "amir",
"age": 30,
"email": "mongard.amir@gmail.com",
"is_employee": true,
"hobbies": [
"reading",
"traveling"
],
"address": {
"street": "123 Main Street",
"city": "Tehran",
"zip": "10001"
}
}
در مثال بالا ما یک آبجکت json ایجاد کرده ایم که دارای چندین ویژگی مانند name, age, is_employee است. همانطور که مشخص است شما میتوانید مقادیر تودرتو را درون یک آرایه ایجاد کنید. در مثال بالا ویژگی های hobbies و address دو آرایه هستند که خود دارای چندین ویژگی دیگر هستند. دقت کنید که تمام مقادیر json به شکل key-value ذخیره میشوند که کلید یک رشته(str) خواهد بود و مقدار میتوانید رشته، عدد، boolean یا آرایه یا یک آبجکت باشد.
# استفاده از ماژول json پایتون
خوشبختانه پایتون به صورت پیشفرض از json پشتیبانی میکند. پایتون در کتابخانه استاندارد خود دارای یک ماژول به نام json است که به شما اجازه میدهد به سادگی تمام با نوع داده جیسان کار کنید. فقط کافیست که از کد زیر استفاده کنید:
import json
حالا که ماژول مورد نیاز را ایمپورت کردید، میتوانید از متدها و کلاسهای قدرتمند پایتون برای کار با فایلهای json استفاده کنید.
در پایتون شما میتوانید دادههای خود را تبدیل کنید. به فرآیند تبدیل آبجکت های پایتونی به یک رشته json، سریال سازی(serialization) گفته میشود. شما باید داده های خود را به json تبدیل کنید تا بتوانید آنها را بین برنامه ها یا سیستم ها منتقل کنید. سریال سازی json یک تکنیک رایج در توسعه وب میباشد. در مقابل، اگر یک رشته json را به آبجکت های پایتونی تبدیل کنید سریال زدایی (deserialization) انجام دادهاید. اگر بخواهید دادههای دریافتی خود را در برنامه استفاده کنید باید عملیات سریال زدایی را انجام دهید.
# تبدیل آبجکت پایتون به json
برای تبدیل یک آبجکت پایتون به json میتوانید از تابع dumps استفاده کنید. این تابع به عنوان آرگومان یک آبجکت پایتونی گرفته و یک رشته json برمیگرداند. به مثال زیر دقت کنید:
import json
# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}
json_string = json.dumps(python_obj)
print(json_string)
# output: {"name": "John", "age": 30}
طبق جدولی که در ماژول json پایتون وجود دارد، آبجکت های پایتون به مقادیر مختلفی از json تبدیل خواهند شد:
Python | JSON |
---|---|
dict |
object |
list , tuple |
array |
str |
string |
int , long , float |
number |
True |
true |
False |
false |
None |
null |
# تبدیل json به آبجکت پایتون
برای اینکه بتوانید نوع داده json را به یک آبجکت پایتونی تبدیل کنید باید از متد loads استفاده کنید. تابع loads به عنوان آرگومان یک رشته json گرفته و یک آبجکت پایتونی مناسب برمیگرداند. به مثال زیر دقت کنید:
import json
# JSON string to Python object
json_string = '{"name": "John", "age": 30}'
python_obj = json.loads(json_string)
print(python_obj)
# output: {'name': 'John', 'age': 30}
# ذخیره داده ها در فایل json
تابع دیگری که در ماژول json پایتون وجود دارد، متد dump میباشد. از این تابع میتوانید برای تبدیل آبجکت های پایتونی و ذخیره آنها در یک فایل json استفاده کنید. به مثال زیر دقت کنید:
import json
# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
json.dump(python_obj, file)
# خواندن فایل json
برای خواندن فایل های json و تبدیل محتویات به آبجکتهای پایتونی میتوانید از تابع load پایتون استفاده کنید. تابع load به عنوان آرگومان یک فایل json را گرفته و محتویات آن را به پایتون تبدیل میکند. به مثال زیر دقت کنید:
import json
# read JSON file and parse contents
with open('data.json', 'r') as file:
python_obj = json.load(file)
print(python_obj)
# output: {'name': 'John', 'age': 30}
# چند نکته برای بهبود عملکرد json در پایتون
هنگامی که با حجم زیادی از داده های json کار میکنید، بهینه سازی کد برای اطمینان از اجرای کارآمد آن مهم است. در اینجا به چند نکته برای بهنیه سازی عملکرد json در پایتون اشاره میکنیم:
1. میتوانید از کتابخانه های ujson و cjson استفاده کنید که سرعت تبدیل داده بیشتری نسبت به ماژول json پیشفرض پایتون دارند.
2. از تبدیل کردن غیرضروری داده ها خودداری کنید. سعی کنید در صورت امکان از داده های json به شکل مستقیم استفاده کنید و آنها را به پایتون تبدیل نکنید.
3. در زمان کار با حجم زیاد داده json میتوانید از generators پایتون استفاده کنید که باعث صرفه جویی در استفاده از حافظه خواهد شد.
4. برای انتقال داده های json در شبکه از روش های فشرده سازی مثل gzip استفاده کنید.
5. اگر قرار است چندین بار از داده های یکسان json استفاده کنید، بهتر است از کش استفاده کنید.
ارسال نظر