程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> JSON 之 SuperObject(1)

JSON 之 SuperObject(1)

編輯:Delphi

 一直盼著 Delphi 能夠直接支持 "正則表達式" 與 "JSON";

  Delphi 2009 剛來的時候, 有了 JSON, 但不好, 那時嘗試過一點. 這是以前的鏈接: 什麼是 JSON?

  Delphi 2010 帶了兩個相關單元: DBXJSON、DBXJSONReflect 貌似很強大, 但主要是給 DataSnap 准備的; 嘗試了半天, 也很失望: 可能給 DataSnap 網絡數據傳遞夠用了, 但太簡陋了, 好像是沒寫完, 對中文支持也有問題.

  我想不等了, 找第三方吧, 真的找到了驚喜: JSON – SuperObject v1.1(簡介、下載), Henri Gourvest 的大作!

  裡面還有 XML 相關的一個單元, 慢慢看吧.

  先來個簡單測試:

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, StdCtrls; 
 
type 
 TForm1 = class(TForm) 
  Button1: TButton; 
  Button2: TButton; 
  procedure Button1Click(Sender: TObject); 
  procedure Button2Click(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
uses SuperObject; 
 
//SuperObject 提倡使用接口; ParseString 是 TSuperObject 類的 Class 方法 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 jo: ISuperObject; 
begin 
 jo := TSuperObject.ParseString('{"No1":"張三", "No2":"李四"}'); 
 ShowMessage(jo['No1'].AsString); {張三} 
end; 
 
//有個共用函數 SO, 可方便實現接口 
procedure TForm1.Button2Click(Sender: TObject); 
var 
 jo: ISuperObject; 
begin 
 jo := SO('{"No1":"張三", "No2":"李四"}'); 
 ShowMessage(jo['No2'].AsString); //李四 
end; 
 
end. 

  為什麼以用接口為主?

  我猜是: 一個 JSON 對象中可能包含的子對象太多, 用接口釋放比較方便, 因為是自動釋放;

  另外, Delphi 2010 新給的 IOUntils 單元的功能是用結構的方式給出, 結構也是自釋放的;

  自動釋放! 這會是個方向嗎? 不過這樣的確會少寫很多代碼.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved