kbmmw 中JSON 操作入門

來源:互聯網
上載者:User

標籤:大小   sar   send   com   nbsp   使用   procedure   phi   asa   

現在各種系統中JSON 用的越來越多。delphi 也自身支援JSON 處理。

今天簡要說一下kbmmw 內部如何使用和操作JSON。

kbmmw 中json的操作是以TkbmMWJSONStreamer 為基礎,要匯入、匯出JSON字串, 首先要建立TkbmMWJSONStreamer.

 然後是 TkbmMWJSONObject和 TkbmMWJSONArray。

先舉一個最簡單的例子。

procedure TForm1.Button3Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;  s:String;begin   myjson:=TkbmMWJSONStreamer.Create; // 建立JSON流   alljson:=TkbmMWJSONObject.Create; // 建立JSON 對象   alljson.AsString[‘root‘]:=‘ok‘; // 賦值   s:=myjson.SaveToUTF16String(alljson);   memo1.Lines.Clear;   memo1.Lines.Add(s);   alljson.Free;   myjson.Free;end;

以上代碼運行結果為

{"root":"ok"}

繼續修改添加一些代碼

procedure TForm1.Button3Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;  djson:TkbmMWJSONObject;  s:String;begin   myjson:=TkbmMWJSONStreamer.Create;   alljson:=TkbmMWJSONObject.Create;   djson:=TkbmMWJSONObject.Create; // 建立一個子物件   djson.Asinteger[‘ID‘]:=1;   djson.AsString[‘name‘]:=‘xalion‘;   djson.AsDateTime[‘date‘]:=now;   alljson.AsObject[‘result‘]:=djson;   s:=myjson.SaveToUTF16String(alljson);   memo1.Lines.Clear;   memo1.Lines.Add(s);   alljson.Free;   myjson.Free;end;

 

這樣返回的結果如下

{"result":{"ID":1,"name":"xalion","date":"2017-07-01T01:00:00.427+08:00"}}

即返回一條記錄資訊。

如果需要返回多條記錄,就需要使用TkbmMWJSONArray。

procedure TForm1.Button3Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;  djson:TkbmMWJSONObject;   datajson: TkbmMWJSONArray;  s:String;  I: Integer;begin   myjson:=TkbmMWJSONStreamer.Create;  // 建立一個JSON 流   alljson:=TkbmMWJSONObject.Create;  // 建立一個JOSN 根對象   datajson:=TkbmMWJSONArray.Create;   //建立一個JSON 數組   for I :=1 to 10 do    begin         djson:=TkbmMWJSONObject.Create;         djson.Asinteger[‘ID‘]:=i;         djson.AsString[‘name‘]:=‘xalion‘;         djson.AsDateTime[‘date‘]:=now;         datajson.Add(djson);         // 加入資料    end;    alljson.AsArray[‘result‘]:=datajson;   s:=myjson.SaveToUTF16String(alljson);   memo1.Lines.Clear;   memo1.Lines.Add(s);   alljson.Free;   myjson.Free;end;

最後輸出結果為

{"result":[{"ID":1,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":2,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":3,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":4,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":5,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":6,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":7,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":8,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":9,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":10,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"}]}

下面講一下如何訪問JSON字串裡面的對象和值

procedure TForm1.Button4Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;begin    myjson:=TkbmMWJSONStreamer.Create;  // 建立一個JSON 流    alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 載入到根JSON    memo2.Lines.Clear;    memo2.Lines.Add(alljson.AsString[‘root‘]);    alljson.Free;    myjson.Free;end;

運行

訪問對象

procedure TForm1.Button4Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;begin    myjson:=TkbmMWJSONStreamer.Create;  // 建立一個JSON 流    alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 載入到根JSON    memo2.Lines.Clear;    memo2.Lines.Add(alljson.AsObject[‘result‘].AsString[‘name‘] );    alljson.Free;    myjson.Free;end;

運行結果

訪問數組

procedure TForm1.Button4Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;   jresult:TkbmMWJSONArray;begin    myjson:=TkbmMWJSONStreamer.Create;  // 建立一個JSON 流    alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 載入到根JSON    memo2.Lines.Clear;    jresult:=TkbmMWJSONArray(alljson.AsArray[‘result‘]);    // 返回數組    memo2.Lines.Add(jresult.AsObject[5].AsString[‘name‘] );    alljson.Free;    myjson.Free;end;

運行結果

 

 延伸一下

procedure TForm1.Button4Click(Sender: TObject);var  myjson:TkbmMWJSONStreamer;  alljson: TkbmMWJSONObject;  jresult:TkbmMWJSONArray;  i:integer;begin    myjson:=TkbmMWJSONStreamer.Create;  // 建立一個JSON 流    alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 載入到根JSON    memo2.Lines.Clear;    jresult:=TkbmMWJSONArray(alljson.AsArray[‘result‘]);    // 返回數組    memo2.Lines.Add(jresult.AsObject[5].AsString[‘name‘] );    memo2.lines.Add(‘數組大小:‘+jresult.Count.ToString  );    memo2.lines.Add(‘屬性個數:‘+jresult.AsObject[5].PropertyCount.ToString  );    for I := 1 to jresult.AsObject[5].PropertyCount do          memo2.lines.Add(‘屬性‘+i.ToString+‘名:‘+jresult.AsObject[5].PropertyName[i-1]);    alljson.Free;    myjson.Free;end;

運行結果

總之,用kbmmw 操作JSON 非常方便,更牛的是,這個可以與XML,BSON,YAML 實現無縫互轉。

 

kbmmw 中JSON 操作入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.