Python JSON

JSON یک نوشتار جهت ذخیره و تبادل داده است.

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

JSON در پایتون

پایتون یک پکیج داخلی (built-in) به اسم json دارد که با استفاده از آن می‌توان با داده‌های JSON کار کرد.

پردازش JSON - تبدیل از JSON به پایتون

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


import json

# some JSON:
x =  '{ "name":"John", "age":30, "city":"New York"}'

# parse x:
y = json.loads(x)

# the result is a Python dictionary:
print(y["age"])

خروجی:

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

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


import json

# a Python object (dict):
x = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# convert into JSON:
y = json.dumps(x)

# the result is a JSON string:
print(y)

خروجی:

در پایتون می‌توان داده‌هایی از نوع:

  • dict
  • list
  • tuple
  • string
  • int
  • float
  • True
  • False
  • None

را به رشته JSON تبدیل کرد.


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))

خروجی:

زمانی که از پایتون به JSON تبدیلی را انجام می‌دهید، شیء پایتون به معادلش در JSON (JavaScript) تبدیل می‌شود:

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

در کد زیر یک شیء پایتون را که شامل همه انواع داده‌های مجاز است را به JSON تبدیل کرده‌ایم.


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))

خروجی:

قالب‌بندی نتیجه

مثال بالا رشته JSON را پرینت می‌کند ولی بدون فاصله‌گذاری و شکستن خط خواندن آن آسان نیست.

تابع شیء json.dumps() پارامتری دارد که خواندن خروجی آن را آسان‌تر می‌کند.


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))

خروجی:

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

در کد زیر این مقادیر پیش‌فرض را تغییر داده‌ایم.


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, separators=(". ", " = ")))

خروجی:

مرتب کردن نتیجه

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


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))

خروجی: