Delphi 6 下支援 json 資料格式
阿新 • • 發佈:2019-01-31
我打算寫的系列文章暫定為《從零開始學習網際網路開發技術》,百度了一下貌似沒有同名文章,現在只有零星的一些筆記,估計也只有我才能看得懂,需要重新整理一下,否則發上來是不負責任的。在整理之前,先把自己近期寫的一個Delphi 6下的json類發出來分享一下。
上個月,我們一個產品需要增加一個Windows下的程式,部門裡能做Windows程式開發的很少了,於是任務就落在我頭上。其實我也很長時間沒有開發Windows程式了,手上現成的開發工具就是十來年前的Delphi 6,也不想花太大力氣搞這個,折騰了一下在我的Win 7安裝好Delphi 6就開始開發了。這個程式與服務端通訊要求的格式是json,在json官網和GitHub找了一輪,沒有發現支援Delphi 6的json庫,沒辦法,只能自己寫吧。
花了兩三天時間寫好,在使用過程中只發現一個bug,看來程式碼質量這個基本功還是沒有丟掉。
json的語法比較簡單,程式碼就是按照官網的語法說明採用純原生Object pascal編寫,僅僅使用了TList、TStrings和TStringList三個類,引入了一個類似PHP關聯陣列不需顯式增加陣列項的特性,使用也很方便,具體怎麼實現就不羅嗦了,具體可以看原始碼:https://github.com/rilyu/json4delphi 。
使用方法示例:
var Json: TJson; Str: String begin Json := TJson.Create(); //增加key-value Json.Put('field1', null); Json.Put('field2', True); Json.Put('field3', 3.14); Json.Put('field4', 'hello world'); //增加key-value的另一種方式 Json['field5'].AsBoolean := False; Json['field6'].AsString := 'hello world'; //增加json物件 with Json['field7'].AsObject do begin Put('subfield1', 2.7182818284); Put('subfield2', 'json4delphi'); end; //增加json陣列 with Json['field8'].AsArray do begin Put(6.6260755e-34); Put('The magic words are squeamish ossifrage'); end; //取值 Str := Json['field4'].AsString; //從json格式字串析入 Json.Parse('{"a":1}'); //轉換為json字串 Str := Json.Stringify; end;