JSON چیست؟
JSON مخفف JavaScript Object Notation است و یک فرمت دادهای رایج برای تبادل اطلاعات در وب محسوب میشود. این فرمت، ساختاری ساده و قابل فهم برای انتقال دادهها بین کلاینت و سرور فراهم میکند. مدل JSON شبیه به دنبالهای از کلید و مقدار در زبان برنامهنویسی JavaScript است. یادگیری آن آسان بوده و یکی از موثرترین روشها برای تبادل دادهها به شمار میرود. JSON قابلیت استفاده با زبانهای برنامهنویسی مختلفی مانند Python، Perl، Java و غیره را دارد.
JSON عمدتاً از شش نوع داده در JavaScript پشتیبانی میکند:
- String
- Number
- Boolean
- Null
- Object
- Array
JSON بر پایه دو ساختار اصلی ساخته شده است:
- جفتهای نام/مقدار که به عنوان شیء (object)، رکورد، دیکشنری، جدول هش یا لیست کلیددار رفتار میکند.
- لیستی مرتب از مقادیر که به عنوان آرایه (array)، بردار، فهرست یا دنباله در نظر گرفته میشود.
ساختار دادهای JSON شباهت زیادی به دیکشنری در پایتون دارد. در ادامه نمونهای از دادههای JSON آورده شده است:
{
"book": [
{
"id": 1,
"language": "English",
"edition": "Second",
"author": "Derrick Mwiti"
},
{
"id": 2,
"language": "French",
"edition": "Third",
"author": "Vladimir"
}
]
}
کار با JSON در Python
پایتون ماژولی به نام json
ارائه میدهد که امکان خواندن و نوشتن دادههای JSON را فراهم میکند. هرچند ساختار دیکشنری پایتون و JSON مشابه است، اما تفاوتهایی نیز بین آنها وجود دارد.
رمزگذاری دادههای JSON به فرآیندی به نام سریالسازی (Serialization) گفته میشود که طی آن دادهها به صورت رشتهای از بایتها تبدیل شده و قابل انتقال میشوند. فرآیند معکوس یعنی تبدیل رشته JSON به ساختار دادهای در پایتون، دسریالسازی (Deserialization) نام دارد.
ماژول json
توابع متعددی دارد که در ادامه به مهمترین آنها اشاره میکنیم:
import json
print(dir(json))
خروجی این دستور شامل موارد زیر است:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']
در این بخش با توابع زیر آشنا خواهیم شد:
- load()
- loads()
- dump()
- dumps()