Delphi XE(Embarcadero公司的一款集成開(kāi)發(fā)環(huán)境)能夠方便地讀寫JSON格式的數(shù)據(jù),它提供了TJSONPair、TJSONObject、TJSONArray等一系列類來(lái)實(shí)現(xiàn)JSON數(shù)據(jù)的處理。
在使用Delphi XE讀取JSON數(shù)據(jù)時(shí),需要先使用TJSONObject.ParseJSONValue()方法將JSON字符串轉(zhuǎn)化為TJSONValue對(duì)象,然后根據(jù)JSON文檔的格式,對(duì)TJSONValue對(duì)象進(jìn)行類型轉(zhuǎn)換并讀取其中的數(shù)據(jù)。例如:
var JSONObject: TJSONObject; JSONPair: TJSONPair; JSONValue: TJSONValue; begin JSONObject := TJSONObject.ParseJSONValue(s) as TJSONObject; try JSONPair := JSONObject.Get('name'); if Assigned(JSONPair) then ShowMessage('name: ' + JSONPair.JsonValue.GetValue); JSONValue := JSONObject.Get('age').JsonValue; if Assigned(JSONValue) then ShowMessage('age: ' + JSONValue.GetValue .ToString); finally JSONObject.Free; end; end;
在上述代碼中,s為JSON字符串,1-4行分別定義了JSONObject、JSONPair和JSONValue三個(gè)變量。第2行通過(guò)TJSONObject.ParseJSONValue()方法將s轉(zhuǎn)化為TJSONValue對(duì)象,并強(qiáng)制轉(zhuǎn)換為TJSONObject對(duì)象。第3、4行則分別根據(jù)“name”和“age”的JSON鍵來(lái)獲取JSON對(duì)。如果JSON對(duì)存在,就可以通過(guò)JsonValue屬性獲取該JSON對(duì)的TJSONValue對(duì)象,并調(diào)用GetValue<>()方法獲取數(shù)據(jù)。
除了讀取JSON數(shù)據(jù)以外,Delphi XE還能夠?qū)elphi對(duì)象轉(zhuǎn)化為JSON數(shù)據(jù),具體實(shí)現(xiàn)方式也很簡(jiǎn)單。例如:
var Obj: TJSONObject; A: TPerson; begin A := TPerson.Create; try A.Name := 'Amy'; A.Age := 18; Obj := TJSONObject.Create; try Obj.AddPair('name', A.Name); Obj.AddPair('age', TJSONNumber.Create(A.Age)); ShowMessage(Obj.ToJSON); finally Obj.Free; end; finally A.Free; end; end;
在上述代碼中,我們首先定義了一個(gè)TPerson類,其中包含了name和age兩個(gè)屬性。然后,我們通過(guò)TJSONObject類和TJSONNumber類將A轉(zhuǎn)化為JSON數(shù)據(jù)并進(jìn)行了輸出。