English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSON (Java Script Object Notation) هو تنسيق بيانات خفيف، ومقبول عالميًا. باستخدام تقنية تنسيق JSON في Python، يمكننا تحويل سلسلة JSON إلى كائن Python، أو تحويل كائن Python إلى سلسلة JSON.
للإستفادة من هذه الميزات، يجب علينا استخدام وحدة json في Python. وحدة json مدمجة في مكتبة Python القياسية. لذلك، يجب علينا أولاً استيرادها.
import json
في وحدة json، هناك بعض الطرق مثل dump() وdumps()، يمكنها تحويل كائن Python إلى سلسلة JSON. لديها طريقتان، الأولى هي كائن، والثانية هي كائن ملف. تقوم هذه الطريقة بتحويل الكائن إلى تنسيق JSONالنهرتحويل إلى كائن ملف. وبالمثل، يقبل طريقة dumps() معاملًا واحدًا فقط. المعامل هو الكائن. يتحول الكائن إلى JSONالسلسلة.
import json from io import StringIO str_io_obj = StringIO() #Use JSON Dump to make StringIO json.dump(["India", "Australia", "Brazil"], str_io_obj) print('Object StringIO value: ' + str(str_io_obj.getvalue())) my_json = { "name": "Kalyan", "age": 25, "city": 'Delhi' {} print(json.dumps(my_json, indent=4))
نتيجة الخروج
Object StringIO value: ["India", "Australia", "Brazil"] { "name": "Kalyan", "age": 25, "city": "Delhi" {}
في هذه الحالة، سنقوم بفك التسلسل لسلسلة JSON. هناك طريقتان مختلفتان. هما load() و load(). كلاهما يستخدمان JSON الملف كمعامل. يحول load() بيانات الكائن إلى كائن Python، بينما يحول load() من نوع سلسلة.
import json from io import StringIO str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]') #load from StringIO print('Load: ' + str(json.load(str_io_obj))) print('String to Json: ' + str(json.loads('{"xyz" : 1, "abc" : 2, "xyz" : 3, "pqr" : 4}')))
نتيجة الخروج
Load: ['xyz', 'abc', 'xyz', 'pqr'] String to Json: {'xyz': 3, 'abc': 2, 'pqr': 4}
يستخدم JSONEncoder لتحويل أغراض Python إلى تنسيق JSON. في هذا المثال، سنرى كيفية استخدام JSONEncoder لتحويل أغراض معقدة إلى أغراض نوع JSON.
import json class Comp_Encoder(json.JSONEncoder): def default(self, comp_obj): if isinstance(comp_obj, complex): return [comp_obj.real, comp_obj.imag] return json.JSONEncoder.default(self, comp_obj) print(json.dumps(5+8j, cls=Comp_Encoder))
نتيجة الخروج
[5.0, 8.0]
يؤدي JSONDecoder إلى عملية عكسية.
import json my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"}' #Decode JSON using the JSONDecoder print(json.JSONDecoder().decode(my_str)) print(json.JSONDecoder().raw_decode(my_str))
نتيجة الخروج
{'Asim': 28, 'Priyesh': 23} ({'Asim': 28, 'Priyesh': 23}, 44)