آموزش جیسان(JSON) در پایتون
جیسان(JSON) یک شیوهی نوشتاری یا سینتکس برای ذخیره و تبادل داده است.
جیسان(JSON) مخفف کلمات JavaScript object notation است که به معنی علامتگذاریِ شیءِ جاوا اسکریپت می باشد.
استفاده از جیسان(JSON) در پایتون
پایتون، یک پکیجِ(package) داخلی، به نام json دارد، که میتوانیم از آن برای کار با دادههای جیسان استفاده کنیم.
مثال شماره 1
ایمپورت کردن(اضافه کردن) ماژولِ json:
import json
تجزیه کردن جیسان - تبدیل از جیسان به پایتون
اگر یک رشتهیِ(string) جیسان داشته باشیم، میتوانیم با استفاده از متد json.loads() آن را تجزیه(parse) کنیم. آنچه که پس از انجام این کار به دست میآید یک دیکشنری در پایتون است.
مثال شماره 2
تبدیل دادههای جیسان به پایتون:
import json
# مقداری کد جی سان
x = '{ "name":"John", "age":30, "city":"New York"}'
# x تجزیه کردن
y = json.loads(x)
# نتیجه به صورت یک دیکشنری در پایتون است
print(y["age"])
نتیجه:
30
امتحان کنیدتبدیل دادهای پایتون به جیسان
اگر یک آبجکت یا همان شیء در پایتون داشته باشیم، میتوانیم با استفاده از متد json.dumps() آن را به یک رشتهی جیسان تبدیل کنیم.
مثال شماره 3
تبدیل از پایتون به جیسان:
import json
# یک آبجکت پایتون یعنی یک دیکشنری
x = {
"name": "John",
"age": 30,
"city": "New York"
}
# تبدیل آن به جی سان
y = json.dumps(x)
# نتیجه به صورت یک رشته ی جی سان خواهد بود
print(y)
نتیجه:
{"name": "John", "age": 30, "city": "New York"}
امتحان کنیدما میتوانیم آبجکتهای پایتون زیر را به رشتههای جیسان تبدیل کنیم:
- dict
- list
- tuple
- string
- int
- float
- True
- False
- None
مثال شماره 4
تبدیل آبجکتهای پایتون به رشتههای جیسان و چاپ کردن این مقادیر:
import json
print(json.dumps({"name": "John", "age": 30}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
نتیجه:
{"name": "John", "age": 30}
["apple", "bananas"]
["apple", "bananas"]
"hello"
42
31.76
true
false
null
امتحان کنیدوقتی که دادهها را از پایتون به جیسان تبدیل میکنیم، آبجکتهای پایتون به معادل جیسان (در جاوا اسکریپت) تبدیل میشوند:
| پایتون | جیسان |
|---|---|
| dict | Object |
| list | Array |
| tuple | Array |
| str | String |
| int | Number |
| float | Number |
| True | true |
| False | false |
| None | null |
مثال شماره 5
تبدیل یک آبجکت پایتون به جیسان که حاوی تمام نوعِ داده های قانونی می باشد:
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
# تبدیل به جی سان
y = json.dumps(x)
# نتیجه یک رشته ی جی سان است
print(y)
نتیجه:
{"name": "John", "age": 30, "married": true, "divorced": false, "children": ["Ann","Billy"], "pets": null, "cars": [{"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1}]}
امتحان کنیدفرمت کردن نتیجه
مثال بالا، یک رشتهی جیسان را پرینت میکند اما خوانایی آن خیلی آسان نیست، چون هیچ تورفتگی و شکست خطی در آن وجود ندارد. متد json.dumps() پارامترهایی دارد که با استفاده از آن میتوانیم خوانایی نتیجهی کد بالا را آسانتر کنیم:
مثال شماره 6
استفاده از پارامتر indent برای تعریف مقدار تورفتگی(indent):
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
# استفاده از چهار تورفتگی برای آسان تر کردن خوانایی نتیجه
print(json.dumps(x, indent=4))
نتیجه:
{
"name": "John",
"age": 30,
"married": true,
"divorced": false,
"children": [
"Ann",
"Billy"
],
"pets": null,
"cars": [
{
"model": "BMW 230",
"mpg": 27.5
},
{
"model": "Ford Edge",
"mpg": 24.1
}
]
}
امتحان کنیدما همچنین میتوانیم جداکنندهها را تعریف کنیم، که مقدار پیش فرض آن (", ", ": ") است، و یعنی اینکه از یک کاما و یک space(فاصله سفید) برای مشخص کردن هر آبجکت استفاده شود و از یک علامت دونقطه و یک فاصله سفید برای جدا کردن کلیدها(keys) از مقادیر(values) استفاده شود:
مثال شماره 7
استفاده از پارامتر separators برای تغییر دادن جداکننده ی پیش فرض:
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
# use . and a space to separate objects, and a space, a = and a space to separate keys from their values:
print(json.dumps(x, indent=4, separators=(". ", " = ")))
نتیجه:
{
"name" = "John".
"age" = 30.
"married" = true.
"divorced" = false.
"children" = [
"Ann".
"Billy"
].
"pets" = null.
"cars" = [
{
"model" = "BMW 230".
"mpg" = 27.5
}.
{
"model" = "Ford Edge".
"mpg" = 24.1
}
]
}
امتحان کنیدمرتب کردن نتیجه
متد json.dumps() پارامترهایی برای مرتب کردن کلیدها(keys) در نتیجه(result) دارد:
مثال شماره 8
استفاده از پارامتر sort_keys برای مشخص کردن اینکه آیا نتیجه باید مرتب شود یا خیر:
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
# مرتب کردن نتیجه به صورت الفبایی توسط کلیدها
print(json.dumps(x, indent=4, sort_keys=True))
نتیجه:
{
"age": 30,
"cars": [
{
"model": "BMW 230",
"mpg": 27.5
},
{
"model": "Ford Edge",
"mpg": 24.1
}
],
"children": [
"Ann",
"Billy"
],
"divorced": false,
"married": true,
"name": "John",
"pets": null
}
امتحان کنید
منبع: www.w3schools.com/python
- بازدید: 21
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.