1. 程式人生 > >Delphi 6 下支援 json 資料格式

Delphi 6 下支援 json 資料格式

  我打算寫的系列文章暫定為《從零開始學習網際網路開發技術》,百度了一下貌似沒有同名文章,現在只有零星的一些筆記,估計也只有我才能看得懂,需要重新整理一下,否則發上來是不負責任的。在整理之前,先把自己近期寫的一個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;