ویدیو آموزش کارکردن با json در پایتون

امیرحسین بیگدلو April 2023

پیش نیاز: what is json

به API میتونید از اینجا دسترسی پیدا کنید.

 

در این ویدیو میبینیم که چطور میشه در پایتون با json کار کرد و یک API هم آماده کردم تا بتونیم اطلاعاتی رو که اون API با json برای ما میفرسته رو هندل کنیم.

 

در این آموزش ، نحوه ذخیره داده ها در پایتون با استفاده از ماژول JSON را بررسی می کنیم. ما همچنین نحوه استفاده از متدهای json.dump () و json.dumps () ، متدهای json.load () و json.loads () و تفاوت آنها را یاد می گیریم. سرانجام، ما به نحوه serialize و deserialize کردن JSON به Object در پایتون خواهیم پرداخت.

 

 

# چرا داده ها را در پایتون با استفاده از ماژول JSON ذخیره می کنیم؟

 

1. توسعه دهندگان را قادر می سازد تا ساختارهای داده ساده را در یک فایل ریخته و در صورت نیاز بارگذاری کنند.

2. با استفاده از JSON می توان داده ها را بین برنامه های پایتون به اشتراک گذاشت.

3. فرمت JSON از پلتفرم یا زبان مستقل است. وقتی داده ها را با فرمت JSON ذخیره می کنید، می توانید به راحتی از آنها در سایر زبان های برنامه نویسی نیز استفاده کنید.

4. یادگیری آن ساده است و در قالب قابل حمل ارائه می شود.

 

 

# استفاده از json.dump()

برای استفاده از تابع json.dump () ابتدا ماژول json را وارد کنید. برای وارد کردن ماژول json ، از import json استفاده کنید. () json.dump به نوشتن داده ها در یک فایل JSON کمک می کند.

 

Syntax:

json.dump(data, file)

 

تابع () json.dump دو آرگومان دارد:

1. data: داده هایی که باید در یک فایل JSON نوشته شوند.

2. file: یک شیء فایل که می تواند برای ذخیره داده ها استفاده شود.

 

بیایید یک برنامه سریع برای ذخیره مجموعه ای از اعداد در یک فایل JSON ایجاد کنیم. برای ذخیره مجموعه اعداد ، از تابع json.dump () استفاده می کنیم:

import json


numbers = [10, 20, 30, 70, 191, 23]  #create a set of numbers

filename = 'numbers.json'          #use the file extension .json

with open(filename, 'w') as file_object:  #open the file in write mode
 json.dump(numbers, file_object)   # json.dump() function to stores the set of numbers in 

numbers.json file

 

در این برنامه، مجموعه اعداد را در numbers.json ذخیره می کنیم. پسوند .json نشان می دهد که فایل حاوی داده هایی با فرمت JSON است.

 

سپس به فایل در حالت 'w' (حالت نوشتن) دسترسی پیدا می کنیم تا بتوانیم داده ها را در یک فایل JSON نوشت. سرانجام ، تابع json.dump () مجموعه اعداد را در فایل number.json ذخیره می کند.

 

این برنامه خروجی ترمینال ندارد، اما وقتی پرونده number.json را باز می کنیم، داده های زیر را می بینیم:

[10, 20, 30, 70, 191, 23]

 

 

# استفاده از json.dumps()

 

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

 

Syntax:

json.dumps(data)

 

تابع () json.dumps یک پارامتر می گیرد ، یعنی داده هایی که باید به رشته JSON تبدیل شوند.

 

بیایید به مثال زیر نگاهی بیندازیم:

import json


data = {
    'Name' : 'Felix',
    'Occupation' : 'Doctor'
}

dict_1 = json.dumps(data) # converting dictionary to JSON

print(dict_1)   # {'Name' : 'Felix','Occupation' : 'Doctor'}

 

 

# تفاوت بین dump و dumps

 

1. متد dump () دو پارامتر (داده و فایل) ، در حالی که متد dumps () تنها یک پارامتر (داده) می گیرد.

2. برخلاف متد dumps، متد dump با عملیات فایل ترکیب می شود.

 

 

# استفاده از json.load()

 

ما از تابع json.load برای خواندن یک فایل JSON استفاده می کنیم. تابع json.load () یک آرگومان می گیرد که شیء فایل است.

 

Syntax:

json.load(file_object)

 

فرض کنید، ما یک فایل JSON به نام student.json داریم که حاوی اشیاء JSON است.

{
    "name": "Felix",   
    "Subjects": ["English", "Political Science"]  
}  

 

بیایید یک کد برای خواندن داده های ذخیره شده در پرونده student.json با استفاده از تابع json.load بنویسیم.

import json  
  
with open(r,'student.json') as file_object:  
  data = json.load(file_object)  

print(data)   # {"name": "Felix", "Subjects": ["English", "Political Science"]}

 

تابع json.load () فایل JSON را تجزیه می کند و یک دیکشنری به نام data را برمی گرداند.

 

 

# استفاده از json.loads()

 

ما از متد json.loads () برای تجزیه یک رشته JSON و بازگشت یک شی پایتون مانند دیکشنری استفاده می کنیم. متد json.loads () محتویات فایل را به عنوان یک رشته می گیرد.

 

Syntax:

json.loads(json_string)

 

Example:

import json
  
# JSON string:
dict_1 = {
    "Name": "Felix Maina",
    "Contact Number": 0712345678,
    "Email": "fely@gmail.com",
    }
  
# parse dict_1:
y = json.loads(dict_1)

# the result is a Python dictionary:
print(y)   #{ "Name": "Felix Maina", "Contact Number": 0712345678,"Email": "fely@gmail.com", }

 

در اینجا ، رشته dict_1 با استفاده از متد () json.loads تجزیه می شود که یک دیکشنری به نام y را برمی گرداند.

 

توجه: تفاوت اصلی بین json.loads () و json.load () این است که json.loads () رشته ها را می خواند در حالی که json.load () برای خواندن فایل ها استفاده می شود.

 

 

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

 

Serialization فرآیند تبدیل یک نوع داده بومی به فرمت JSON است.

 

ماژول JSON یک شیء دیکشنری پایتون را به یک شی JSON تبدیل می کند. متدهای json.dump () و json.dumps () برای سریال سازی داده های پایتون به فرمت JSON استفاده می شود.

 

بیایید به یک مثال با استفاده از متد json.dump () نگاهی بیندازیم:

import json


# Data to be written
details = {
        "name": "Felix Maina",
        "years": 21,
        "school": "Makerere"
}

# Serializing JSON and writing JSON file
with open("details.json", "w") as file_object:
    json.dump(details, file_object)  # {"name": "Felix Maina", "years": 21, "school": "Makerere"}

 

در اینجا، ما یک دیکشنری پایتون را به یک فایل فرمت JSON با نام details.json تبدیل می کنیم.

 

متد json.dumps () یک شی پایتون را به یک رشته JSON تبدیل می کند ، همانطور که در زیر نشان داده شده است:

import json


# Data to be written
details = {
        "name": "Felix Maina",
        "years": 21,
        "school": "Makerere"
}

# Serializing JSON
json_string = json.dumps( details )

print( json_string )  #{"name": "Felix Maina", "years": 21, "school": "Makerere"}

 

 

 

# تغییر JSON به Object در پایتون

Deserialization فرآیند تبدیل داده های JSON به یک نوع داده بومی است. در اینجا، ما داده های JSON را به یک دیکشنری در پایتون تبدیل می کنیم.

 

ما از متد json.loads () برای تغییر داده های JSON به یک شی پایتون استفاده می کنیم. روش json.load () نیز برای تغییر یک قالب فرمت JSON به یک شی پایتون استفاده می شود.

 

مثال:

# importing the module
import json
  
# creating the JSON data as a string
data = '{"Name" : "Felix", "status" : "married"}'

print("data before deserailizing")

print(data) #json string
   
# deserailizing the data
h = json.loads(data)

print("data after deserailizing")

print(h) #python dictionary

 

Output:

# data before deserailizing
{"Name" : "Felix", "status" : "married"}

#data after deserailizing
{'status': 'married', 'Name': 'Felix'}

 

اجازه دهید یک فایل ایجاد کرده و نام آن را cars.json بگذارید. این فایل باید دارای اطلاعات زیر باشد:

 {
    "name": "Suzuki",
    "year": 2001,
    "model": "GDF10"
}

 

حالا بیایید با استفاده از تابع load () این فایل را از حالت طبیعی خارج کنیم:

import json


# opening the JSON file 
data = open('cars.json','r') 

print("Datatype before deserialization : ")
print(data) # prints the contents of the file
     
# deserailizing the data
h = json.load(data) 

print("Datatype after deserialization : ")
print(h)  # prints a python dictionary

 

ویدیوهای مشابه



ویدیو زبان yaml چیست
امیرحسین بیگدلو

ارسال نظر


amp

1 سال قبل پاسخ به نظر

درود استاد
من دارم با فلاسک یه سایت می نویسم و زمانی که از متد open توی load استفاده می کنم به من ارور می دهد:
File=load(open('a.json'))
می دونم که ارور از open هست اما نمی دونم چرا

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
والا منم نمیدونم

ali

1 سال قبل پاسخ به نظر

با سلام من آدرس یک وب سرویس دریافت اطلاعات هواشناسی دارم و یک آدرس توکن که توکن user &pass داره حالا نمی تونم چطور با استفاده از کتابخانه requests و json این اطلاعات را در پایتون دریافت کنم ممنون میشم کمک کنید یا فیلم آموزشی تهیه کنید.
سپاسگزارم

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
باید دوره وب اسکرپینگ پایتون رو ببینید

حمبید

2 سال قبل پاسخ به نظر

سلام وقت بخیر
آیا میتوان داده هایی از یک سایت که اطلاعاتی را توسط api یک برنامه به ما میدهد مستقیما در حافظه رم قرار داد بجای اینکه در یک فایل با فرمت csv ذخیره نمود؟ (بطور کلی داده ها را از جایی دریافت و بجای هارد روی رم ذخیره کرد).

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
من بلد نیستم و با پایتون هم فکر نکنم بتونید اینکار رو انجام بدین.


Reza

1 سال قبل

اگرمنظور شما از حافظه رم همان فلش مموری (کول دیسک) است. باید آدرس مسیرآن را کپی و در دستور json.dump( )z قرار دهید.

mamad

2 سال قبل پاسخ به نظر

چرا در بخش phone در فایل جیسونی ابتدا عدد صفر رو میزاریم ارورو میده ؟

ارسال نظر



حسام

2 سال قبل پاسخ به نظر

سلام
ببخشید یه برنامه نوشتم که هر اینپوتی که میگیره داخل یه جیسون به صورت دیکشنری ذخیره بکنه ولی هربار فقط داخل جیسون همون مقداری که دادم ذخیره میشه و چیزی بهش اضافه نمیشه
ببخشید البته ممکنه بگید ایراد کارم کجاست ؟
import json
key=input("import :")
value=input("import :")
test={}
test[f"{key}"] = f"{value}"

with open("1.json" , "w") as f:
json.dump(test ,f, indent=2)

with open("1.json") as f:
result = json.load(f)

print(result)

ارسال نظر



یاسین

1 سال قبل

از مود a باید استفاده کرد نه w

anonymous

2 سال قبل پاسخ به نظر

خیلیییییییی عالی بود.
بلد نبودم ولی یادگرفتم.
مرسی

ارسال نظر



یه بنده خدا

1 سال قبل

منم همینطور

sharare

2 سال قبل پاسخ به نظر

سلام وقتتون بخیر
بعضی از ویدئوها بعد از دو سه ثانیه از شروعش مشکل داره و می ایسته و play نمیشه
من چندبار تست کردم

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

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

مونگارد