تحتوي Java وPhp واللغات الأخرى على أطر عمل ناضجة لتحليل بيانات Json، مما يسمح لنا باستخدام القليل جدًا من التعليمات البرمجية لتحويل بيانات json المنسقة إلى كائنات أو سمات يمكن للبرنامج التعرف عليها المكونات في دلفي تنفذ هذه الوظيفة، أي IsuperObject. إذا لم يكن لديك هذا المكون بعد، فيرجى البحث عنه وتنزيله عبر الإنترنت أو ترك بريدك الإلكتروني في مربع الرسالة أدناه لطلبه مني.
لنتحدث أولاً عن بعض الوظائف شائعة الاستخدام في ISuperObject.
function SO(const s: SOString = '{}'): ISuperObject; overload; تقوم هذه الوظيفة بتمرير سلسلة بيانات json وإرجاع كائن ISuperObject بشكل عام (jsonstr).
الخاصية O[const path: SOString]: قراءة ISuperObject GetO Write PutO؛ على سبيل المثال: jobj.O['username']، يتم استدعاء هذه الوظيفة بواسطة كائن ISuperObject، والسلسلة الموجودة بين قوسين مربعين هي اسم الحقل في json، تم إرجاع كائن ISuperObject.
الخاصية S[const path: SOString]: SOString read GetS write PutS؛ jObj.S['اسم المستخدم']; وبالمثل، هناك العديد من الوظائف الأخرى المشابهة، مثل I['age'] الذي يُرجع عددًا صحيحًا، وB['isenable'] يُرجع نوعًا منطقيًا، وA['users'] يُرجع مصفوفة TSuperArray.
تُستخدم وظائف AsString وAsBoolean وAsInteger وAsArray وISuperObject لتحويل ISuperObject إلى نوع البيانات المقابل.
دعونا نلقي نظرة على الكود التجريبي أدناه، بيانات json هي كما يلي
{ "retcode": "1"، "datafrom": "الخادم"، "users": "[{/"id/":1، /"username/": /"liuderu/"، /"website/": /"bcoder.com/"},{/"id/":2, /"username/": /"Jeoe/", /"website/": /"baidu.com/"}]"}نسخة دلفي 2010، الكود هو كما يلي:
وحدة uFmMain؛ واجهات Windows، الرسائل، SysUtils، Variants، Classes، Graphics، Controls، Forms، Dialogs، StdCtrls، ComCtrls، Buttons، superobject؛ type TFmMain = class(TForm) Memo1: TMemo1: TListView; : إجراء TLabel BitBtn1Click(Sender: TObject); القطاع الخاص { الإعلانات الخاصة } public { الإعلانات العامة } end;var FmMain: TFmMain;implementation{$R *.dfm}procedure TFmMain.BitBtn1Click(Sender: TObject);var jRet, jUsers: ISuperObject; : TSuperArray; retCode: integer; strUsers: string; i: integer;begin jRet := SO(Memo1.Text); if (jRet.O['retcode'] <> nil) ثم ابدأ retCode := jRet.O['retcode'].AsInteger Label1; .Caption := 'قيمة الإرجاع:' + IntToStr(retCode) + '؛ مصدر البيانات:' + jRet.O['datafrom'].AsString; if(jRet.O['retcode').AsInteger = 1) ثم ابدأ strUsers := jRet.O['users'].AsString;= SO(strUsers); aryUsers := jUsers.AsArray; for I:= 0 إلى aryUsers.Length - 1 يبدأ بـ ListView1.Items.Add تبدأ التسمية التوضيحية := aryUsers[i].O['id'].AsString; SubItems.Add(aryUsers[i].O['username'].AsString); ].O['website'].AsString); end;مثال بسيط لدلفي باستخدام ISuperObject لتحليل json: Delphi_Json_jb51.rar