Delphi 使用superobject分析JSON

ResizedImage600199-RADJson
http://superobject.googlecode.com

https://github.com/hgourvest/superobject

Delphi從2009才開始支援JSON格式,先前的版本需使用第三方函式庫才能解決。這邊提供不錯的SuperObject給大家。

使用方式很簡單,例如從台北市政府資料開放平台取得臺北市公廁點位資訊

[json]
[{“unit”:”台北市政府環境保護局”,”title”:”公廁坐落:士林官邸”,”dep_content”:”座數:8,特優級:2,優等級:6,普通級:0,加強級:0,無障礙設施”,”address”:”臺北市士林區福林路60號”,”lng”:”121.530152″,”lat”:”25.094898″,”modifydate”:”2013-03-25T17:58:20+08:00″},{“unit”:”台北市政府環境保護局”,”title”:”公廁坐落:天母公園”,”dep_content”:”座數
:1,特優級:0,優等級:1,普通級:0,加強級:0″,”address”:”臺北市士林區中山北路七段219號邊”,”lng”:”121.530071″,”lat”:”25.125855″,”modifydate”:”2015-08-06T00:00:00+08:00″}]
[/json]

uses  superobject,  supertypes, superxmlparser;

var vjson: Isuperobject;
vitem:Tsuperarray;
i,j:integer;
s:string;
begin
  vjson:= so('[{"unit":"台北市政府環境保護局","address":"臺北市士林區福林路60號"},{"unit":"台北市政府環境保護局","address":"臺北市士林區中山北路七段219號邊"}]');
  vitem:=vjson.AsArray;
  for i:=0 to vitem.Length-1 do begin
    memo2.Lines.Add(vitem[i]['unit'].AsString+' '+vitem[i]['address'].AsString);
  end;
end;

那如果格式如下
[json]
{“zoo”:”壽山動物園”,”animals”:[{“name”:”猴子”,”years”:”12″},{“name”:”猩猩”,”years”:”5″}]}
[/json]

var vjson: Isuperobject;
vitem:Tsuperarray;
i:integer;
begin
  vjson:= so('{"zoo":"壽山動物園","animals":[{"name":"猴子","years":"12"},{"name":"猩猩","years":"5"}]}');
  memo2.lines.add(vjson['zoo'].asstring);
  vitem:= vjson['animals'].AsArray;
  for i:=0 to vitem.Length -1 do begin
    memo1.Lines.Add(vitem[i]['name'].AsString+' '+vitem[i]['years'].AsString );
  end;