کار با JSON در پایتون
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 4 دقیقه

کار با JSON در پایتون

داشتن درک خوبی از JSON و شیوه کار کردن با اون می‌تونه برای تبدیل شدن به یک توسعه‌دهنده مؤثر خیلی کمک بکنه. JSON یک فرمت متنی برای نمایش داده هستش. JSON مخفف کلمات JavaScript Object Notation به معنای نشانه‌گذاری شیء جاوااسکریپت هستش که همون انگلیسی‌ش بهتره!

JSON به ما این کمک رو می‌کنه تا بتونیم یکسری داده و اطلاعات رو بین دو تا اپلیکیشن منتقل کنیم. این کار از طریق APIها می‌تونه صورت بگیره.

معرفی JSON

اما بیایید یک فایل یا رشته متنی که به سبک JSON نوشته شده رو ببینیم:

{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 27,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}

اگر با جاوااسکریپت کار کرده باشید مطمئنا با ساختار داده‌ای Object آشنایی دارید. JSON یک Object مادر همراه با انواع ساختارهای داده‌ای به صورت فرزند در خود دارد. تمام این فرزندها نیز به صورت Key:Value نوشته می‌شوند. برای مثال:

{
   "Name" : "Arastoo",
}

ما توی کدهای بالا یک Key یا کلید با نام Name داریم و همچنین Value یا مقدار Arastoo. موضوع مهم اینه که شما همیشه باید Key یا کلید رو به صورت رشته بنویسید یعنی بین دو تا دابل کوتیشن قرارشون بدید. اما Value یا مقدار براساس نوع داده‌ای که می‌خواید. شما می‌تونید عدد ثابت، مقدار bool، مقدار null، آرایه و یا حتی یک Object دیگر رو اینجا بگذارید.

کار با داده جی‌سان در پایتون

برای اینکه بتونیم با داده‌های جی‌سان کار بکنیم، توی پایتون یه کتابخونه داخلی به اسم json وجود داره که به ما قابلیت خوندن و استفاده از داده‌های جی‌سان رو میده.

اولین کار اینه که اون رو import بکنیم:

import json

حالا اگه یک dir از json داشته باشیم خروجی زیر رو می‌بینیم:

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

آشنایی با loads

زمانی که قصد تبدیل کردن یک رشته جی‌سان به یک فرمت که پایتون بتونه اون رو متوجه بشه داشته باشیم از loads استفاده می‌کنیم. برای مثال در قسمت پایین شما یک رشته رو می‌بینید که به سبک جی‌سان نوشته شده:

json_str = """
{
    "Name":"Arastoo",
    "Family":"Abasi",
    "Age":19,
    "is_developer":true,
    "Pet":null
}
"""

حالا چطوری از این دیتاها استفاده کنیم؟ مشکل اصلی اینجاست که پایتون اینو صرفا به صورت یک رشته می‌شناسه ولاغیر. اما قصد ما این هستش که داده‌های موجود رو استخراج یا load کنیم. برای اینکار json.loads رو فراخوانی می‌کنیم:

>>> json.loads(json_str)
{'Name': 'Arastoo', 'Family': 'Abasi', 'Age': 19, 'is_developer': True, 'Pet': None}

خروجی در نهایت به سبک یک دیکشنری پایتونی خواهد بود. حالا می‌تونیم به داده‌ها به صورت مستقل دسترسی داشته باشیم.

آشنایی با load

load هم دقیقا همون کار loads رو انجام میده با این تفاوت که بجای خوندن جی‌سان از یک رشته اون رو از یک فایل می‌خونه. برای اینکار باید یک فایل رو باز کرده و بعد از اون اطلاعات فایل رو load بکنیم. من یک فایل user.json با اطلاعات زیر دارم:

{
  "Name": "Arastoo",
  "Family": "Abasi",
  "Age": 19,
  "is_developer": true,
  "Pet": null
}

حالا قصد دارم که این اطلاعات جی‌سان رو توی پایتون استخراج بکنم. برای اینکار از دستور open with برای باز کردن فایل به صورت read استفاده می‌کنم:

with open('user.json', 'r') as json_file:
    json.load(json_file)

این کار دقیقا همون خروجی قبلی رو با یه روش دیگه بهمون میده.

آشنایی با dumps

متد dumps دقیقا نقطه مخالف با loads هستش. شما قبلا یک رشته جی‌سان داشتید که اون رو به دیکشنری پایتون تبدیل می‌کردید، حالا یک دیکشنری پایتون دارید و باید به یک رشته جی‌سان تبدیل ش بکنید. من یک دیکشنری در زیر دارم و قصد دارم که اون رو به جی‌سان تبدیل بکنم:

dict1 = {

    "Name":"Arastoo",

    "Family":"Abasi",

    "Age":19,

    "is_developer":True,

    "Pet":None

}

برای تبدیل کردنش کافیه dumps رو فراخونی کنم:

>>> json.dumps(dict1)

'{"Name": "Arastoo", "Family": "Abasi", "Age": 19, "is_developer": true, "Pet": null}'

آشنایی با dump

حالا قصد داریم تا همون داده‌ها رو که تبدیل کردیم به جی‌سان، در یک فایل قرار بدیم. برای اینکار باید یک فایل رو با with open به صورت w باز کرده و این اطلاعات رو درش قرار بدیم:

with open('user.json','w') as json_file:
    json.dump(dict1, json_file, indent=3)

ورودی اول dump برابر دیکشنری مورد نظر، ورودی دوم فایلی که می‌خواید جی‌سان درش قرار بگیره و ورودی سوم که یک ورودی اختیاریه برای ایجاد تورفتگی به میزان ۳ اسپیس استفاده میشه.

در پایان

کار با زبان برنامه نویسی پایتون بسیار ساده بوده و در نتیجه در سریع‌ترین زمان ممکن می‌توانید داده‌های JSON را تفسیر کنید و از محتوای آن استفاده نمایید.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.33 از 6 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

کارشناس ارشد تولید و بهینه‌سازی محتوا و تکنیکال رایتینگ - https://arastoo.net

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید