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

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

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

برای شما

بعد از خوندن این مطلب پیشنهاد می‌کنم که ویدیو مطلب رو هم مشاهده بکنید، چرا که فارغ از آموزش موضوعات مقدماتی، یک مثال عملی از کار با JSON و API رو هم در خودش داره.

معرفی JSON

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

12345678910111213141516171819202122232425262728{
  "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 نوشته می‌شوند. برای مثال:

123{
   "Name" : "Arastoo",
}

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

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

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

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

1import json

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

12>>> 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 استفاده می‌کنیم. برای مثال در قسمت پایین شما یک رشته رو می‌بینید که به سبک جی‌سان نوشته شده:

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

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

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

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

آشنایی با load

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

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

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

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

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

آشنایی با dumps

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

1234567dict1 = {
    "Name":"Arastoo",
    "Family":"Abasi",
    "Age":19,
    "is_developer":True,
    "Pet":None
}

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

12>>> json.dumps(dict1)
'{"Name": "Arastoo", "Family": "Abasi", "Age": 19, "is_developer": true, "Pet": null}'

آشنایی با dump

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

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

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

خیلی ساده و لذت بخش. اگر می‌خواید اطلاعات کامل‌تری راجع به این مطلب پیدا کنید و یک مثال عملی رو با این موضوع حل بکنید، ویدیوی مربوط به این ویدیو رو ببینید.

https://www.aparat.com/v/89yvn

قصد داریم یک برنامه‌ای بنویسیم که براساس IP کاربر بفهمه که اهل کجاست، برای اینکار از API و JSON استفاده می‌کنیم.قصد داریم یک برنامه‌ای بنویسیم که براساس IP کاربر بفهمه که اهل کجاست، برای اینکار از API و JSON استفاده می‌کنیم.

نویسنده مطلب: ارسطو عباسی

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.