تحليل JSON Python: دليل بسيط

تحليل JSON Python: دليل بسيط

JSON (اختصار لـ JavaScript Object Notation) هو تنسيق قائم على النص يسهل تبادل البيانات بين التطبيقات المتنوعة. على سبيل المثال ، تطبيق مكتوب بلغة C ++ يعمل على Windows يمكنه بسهولة تبادل بيانات JSON مع تطبيق مكتوب بلغة python ويعمل على Linux. أدت بساطته ومرونته إلى انتشار استخدامه في السنوات الأخيرة ، خاصةً في تفضيله على التنسيقات السابقة القائمة على XML.





توجد مكتبات ومجموعات أدوات متاحة لتحليل وإنشاء JSON من أي لغة أو بيئة تقريبًا. تركز هذه المقالة على الأساليب والقضايا الناشئة عن معالجة JSON باستخدام Python.





بعض نماذج JSON

كيان JSON الأكثر شيوعًا الذي ستواجهه هو ملف موضوع : مجموعة من تعيينات قيمة المفتاح بالتنسيق الموضح أدناه.





ويندوز 10 يعمل على تحديثات بطيئة

شخص. json:

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

إليك كيف يمكنك تمثيل مجموعة من الكائنات. في هذا التمثيل ، كل عنصر من المصفوفة هو كائن. فيما يلي عينة من رواتب لاعبي البيسبول.



رواتب. json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

بالطبع ، يمكنك تمثيل مجموعة من الحجميات أيضًا. تبدو هكذا:





[
'hello',
'world',
35
]

تحليل JSON في بايثون

توفر Python امتداد json الوحدة النمطية التي يمكن استخدامها لتحليل JSON ، وكذلك إنشاء JSON من كائنات وقوائم python.

يوضح مقتطف الشفرة التالي كيفية فتح ملف JSON وتحميل البيانات في متغير.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

عندما يكون لديك سلسلة تحتوي على بيانات JSON ، يمكنك تحويلها إلى كائن python (أو قائمة) بما يلي:

كيفية حذف حساب Outlook الخاص بي
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

لتحليل عنوان URL لـ JSON ، يمكنك إنشاء كائن URL باستخدام أورليب 2 والاستخدام json.load () كما كان من قبل.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

معالجة الأخطاء

عندما تحتوي JSON على أخطاء ، ستحصل على ملف قيمة خطأ . يمكنك التعامل معها واتخاذ الإجراءات التصحيحية إذا لزم الأمر.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

تحليل JSON من سطر الأوامر

في بعض الأحيان ، يكون من المفيد تحليل JSON باستخدام سطر أوامر python ، ربما للتحقق من وجود أخطاء أو للحصول على إخراج جيد المسافة البادئة.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

للحصول على إخراج ذو مسافة بادئة من ملف JSON أعلاه ، يمكنك القيام بما يلي:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

وإليك كيفية تحميل كائن JSON في Python واستخراج ما تحتاجه فقط.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

الوصول إلى البيانات

بمجرد تحميل بيانات JSON في متغير بيثون ، يمكنك الوصول إلى البيانات كما تفعل مع أي بيثون ديكت (أو قائمة حسب الحالة). على سبيل المثال ، يمكن الوصول إلى بيانات JSON أعلاه على النحو التالي:

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

أنواع البيانات

يتم تحديد أنواع البيانات تلقائيًا من البيانات. لاحظ أن سن يتم تحليله على أنه عدد صحيح.

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

يتم استخدام جدول التحويل التالي للتحويل من JSON إلى python.

تحليل JSON باستخدام فئة مخصصة

بشكل افتراضي ، يكون كائن JSON هو حللت في ثعبان قاموس . في بعض الأحيان قد تحتاج إلى إنشاء كائن من فصلك تلقائيًا من بيانات JSON. يمكنك القيام بذلك عن طريق تحديد ملف كائن_خطاف الوظيفة التي تتعامل مع التحويل. يوضح المثال التالي كيف.

هنا فئة مخصصة تمثل ملف شخص .

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'firstName' = '{0}','lastName' = '{1}', 'age' = {2}}}'.format(self.firstName, self.lastName, self.age)

يتم إنشاء مثيل لهذه الفئة بتمرير الوسائط المطلوبة على النحو التالي:

person = Person('Crystal', 'Newell', 27)

لاستخدام هذه الفئة لإنشاء مثيلات عند تحليل JSON ، تحتاج إلى ملف كائن_خطاف يتم تعريف الوظيفة على النحو التالي: تستقبل الوظيفة بيثون قاموس وإرجاع كائن من الفئة الصحيحة.

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

يمكنك الآن استخدام هذا كائن_خطاف تعمل عند استدعاء محلل JSON.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

أمثلة على استخدام JSON

JSON تحظى بشعبية كبيرة في الوقت الحاضر. تقدم العديد من مواقع الويب وتطبيقات SaaS (البرامج كخدمة) إخراج JSON الذي يمكن أن تستهلكه التطبيقات مباشرة. بعض من تلك المتاحة للجمهور تشمل:

  • StackOverflow / StackExchange. هنا عنوان URL والتي تُرجع قائمة الأسئلة بتنسيق JSON.
  • يقدم GitHub واجهة برمجة تطبيقات JSON على https://developer.github.com/v3/.
  • وإليك Flickr API: https://developer.yahoo.com/flickr/.

إذا كنت تبحث عن مزيد من الأمثلة حول كيفية استخدامها بشكل جيد ، فاطلع على هذا الدليل بناء روبوت لوسائل التواصل الاجتماعي باستخدام لغة بايثون .

كيفية الحصول على wifi بدون اتصال بالإنترنت

هل تستخدم JSON للاستهلاك أو تقديم الخدمات؟ وهل تستخدم Python في مجموعة التكنولوجيا الخاصة بك؟ هل تشرح في التعليقات أدناه.

يشارك يشارك سقسقة بريد الالكتروني هل يستحق الترقية إلى Windows 11؟

تم إعادة تصميم Windows. لكن هل هذا كافٍ لإقناعك بالانتقال من Windows 10 إلى Windows 11؟

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • برمجة
  • بايثون
نبذة عن الكاتب جاي سريدهار(تم نشر 17 مقالة) المزيد من Jay Sridhar

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك