JSON مخفف JavaScript Object Notation و به معنی «نشانه گذاری شیء جاوا اسکریپت» است که برای ذخیره سازی یا تبادل اطلاعات به کار می رود. یادگیری JSON بسیار ساده است و به زبان برنامه نویسی خاصی وابسته نیست! بلکه فقط نحوه ی نگارش آن بر اساس قوانین شیء جاوا اسکریپت است؛ JSON در حقیقت فقط یک رشته متن است که می تواند در هر زبان برنامه نویسی خوانده شود. این فرمت ابتدا توسط آقای Douglas Crockford معرفی شد. از ویژگی های JSON می توان گفت:
{}
)[]
)مثالی از یک رشته ی ساده ی JSON:
{ "name":"John" }
یکی از پکیج های زبان پایتون (همان ماژول ها) نیز json
نام دارد که مخصوص کار با این رشته ها است بنابراین برای کار با رشته های JSON باید این ماژول را در پروژه ی خود وارد کنید:
import json
اگر رشته ی JSON داشته باشید می توانید با استفاده از متد ()json.loads
آن را parse (تجزیه) کنید. نتیجه ی این کار تبدیل رشته ی JSON به یک dictionary در پایتون خواهد بود:
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"])
خروجی عدد 30 (سن شخص) خواهد بود.
حالا می توانید همین فرآیند را به صورت معکوس نیز انجام دهید؛ یعنی اگر یک شیء در زبان پایتون داشته باشید می توانید با استفاده از متد ()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)
خروجی:
{"name": "John", "age": 30, "city": "New York"}
در واقع شما می توانید تمامی اشیاء زیر در زبان پایتون را به 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))
خروجی به شکل زیر خواهد بود:
{"name": "John", "age": 30}
["apple", "bananas"]
["apple", "bananas"]
"hello"
42
31.76
true
false
null
همانطور که می بینید در این مثال مقادیری که ما در زبان پایتون داشیتم به معادل JSON (جاوا اسکریپتی) خودشان تبدیل شده اند:
پایتون | JSON |
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
اگر بخواهیم این موضوع را در یک مثال عملی نشان بدهیم می گوییم:
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} ] } # convert into JSON: y = json.dumps(x) # the result is a JSON string: 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 می شوند.
اگر دقت کرده باشید برای نمایش این رشته از تابع ()json.dumps
استفاده کرده ایم. این تابع پارامترهای دیگری دارد که کار مرتب کردن رشته ی JSON را انجام می دهند. همانطور که می بینید خروجی کد بالا خیلی تمیز و قابل خواندن نیست و یک رشته ی پشت سر هم می باشد. یکی از پارامترهای قالب بندی این تابع indent
است که کار indentation (فرورفتگی های اول خطوط) را انجام میدهد:
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 four indents to make it easier to read the result: 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 } ] }
توجه داشته باشید که من خروجی را مرتب نکرده ام. خروجی به صورت متنی نیز به همین شکل و مرتب شده است:
{
"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
}
]
}
پارامتر بعدی این تابع separators (جدا کننده ها) است. مقدار پیش فرض آن هم (" :" ," ,"
) است؛ یعنی با استفاده از علامت ,
(ویرگول انگلیسی) و یک اسپیس اشیاء را از هم جدا کرده و با استفاده از علامت : و یک اسپیس key ها را از value ها جدا می کند. ما می توانیم این مقدار را به دلخواه خود تغییر دهیم. مثال:
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=(". ", " = ")))
کد بالا می گوید با استفاده از علامت نقطه و یک اسپیس اشیاء را جدا کن و سپس با یک اسپیس و علامت = و یک اسپیس دیگر key ها را از value ها جدا کن. خروجی بدون دستکاری و مرتب سازی به شکل زیر خواهد بود:
{ "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 } ] }
آخرین پارامتر نیز sort_keys می باشد که مشخص می کند نتایج باید به ترتیب خاصی (بر اساس حروف الفبای انگلیسی) نمایش داده شوند یا خیر (با استفاده از true یا false). به کد زیر نگاه کنید:
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} ] } # sort the result alphabetically by keys: 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 }
امیدوارم با قابلیت های فراوان پایتون برای کار با JSON آشنا شده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.