به آموزشگاه مجازی سینا خوش آمدید!

آموزش جی‌سان(JSON) در پایتون

امتیاز
(0)

جی‌سان(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. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال