茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    Delphi用QJSON解析JSON格式的數(shù)據(jù)
    來源:易賢網(wǎng) 閱讀:3084 次 日期:2015-08-27 16:31:27
    溫馨提示:易賢網(wǎng)小編為您整理了“Delphi用QJSON解析JSON格式的數(shù)據(jù)”,方便廣大網(wǎng)友查閱!

    本來用superobject來解析JSON已經(jīng)夠用了,可惜這個(gè)東東不能在移動段使用,于是找到QJSON來處理。

    這是一個(gè)國內(nèi)高手寫開源免費(fèi)的東西,贊一個(gè)。

    加入數(shù)據(jù)如下:

    {"message":"ok","status":"1","state":"3","data":

    [{"time":"2012-07-07 13:35:14","context":"客戶已簽收"},

    {"time":"2012-07-07 09:10:10","context":"離開 [北京石景山營業(yè)廳] 派送中,遞送員

    [溫],電話[]"},

    {"time":"2012-07-06 19:46:38","context":"到達(dá) [北京石景山營業(yè)廳]"},

    {"time":"2012-07-06 15:22:32","context":"離開 [北京石景山營業(yè)廳] 派送中,遞送員

    [溫],電話[]"},

    {"time":"2012-07-06 15:05:00","context":"到達(dá) [北京石景山營業(yè)廳]"},

    {"time":"2012-07-06 13:37:52","context":"離開 [北京_同城中轉(zhuǎn)站] 發(fā)往 [北京石景山

    營業(yè)廳]"},

    {"time":"2012-07-06 12:54:41","context":"到達(dá) [北京_同城中轉(zhuǎn)站]"},

    {"time":"2012-07-06 11:11:03","context":"離開 [北京運(yùn)轉(zhuǎn)中心駐站班組] 發(fā)往 [北京_

    同城中轉(zhuǎn)站]"},

    {"time":"2012-07-06 10:43:21","context":"到達(dá) [北京運(yùn)轉(zhuǎn)中心駐站班組]"},

    {"time":"2012-07-05 21:18:53","context":"離開 [福建_廈門支公司] 發(fā)往 [北京運(yùn)轉(zhuǎn)中

    心_航空]"},

    {"time":"2012-07-05 20:07:27","context":"已取件,到達(dá) [福建_廈門支公司]"}

    ]}

    用QJSON解析如下:

    procedure TForm15.Button1Click(Sender: TObject);

    var

    aqjson,aqjsonarr : TQJSON;

    i : Integer;

    stime, scontext : string;

    begin

    aqjson := TQJSON.Create;

    aqjson.parse(memo1.lines.text);

    if aqjson.ValueByName('message', '') = 'ok' then

    begin

    memo2.Clear;

    aqjsonarr := aqjson.ItemByName('data');

    for i := 0 to aqjsonarr.Count - 1 do

    begin

    stime := aqjsonarr.Items[i].ValueByName('time', '');

    scontext := aqjsonarr.Items[i].ValueByName('context', '');

    Memo2.Lines.Add(stime+'----'+scontext);

    end;

    end;

    end;

    可以看到QJSON的解析還是很方便的。

    不過這種格式存在大量冗余數(shù)據(jù)——每個(gè)數(shù)據(jù)項(xiàng)都攜帶了字段信息,其實(shí)可以只返回一次字段信息即可。

    數(shù)據(jù)精簡如下:

    {"message":"ok","status":"1","state":"3","data":

    ["2012-07-07 13:35:14","客戶已簽收",

    "2012-07-07 09:10:10","離開 [北京石景山營業(yè)廳] 派送中,遞送員[溫],電話[]",

    ]}

    可以看到數(shù)組里面的串不再是JSON格式(Key:Value)的了,這時(shí)不能再使用ValueByName,而直接使用Value。

    procedure TForm15.Button2Click(Sender: TObject);

    var

    aqjson,aqjsonarr : TQJSON;

    i : Integer;

    stime, scontext : string;

    begin

    aqjson := TQJSON.Create;

    aqjson.parse(memo3.lines.text);

    if aqjson.ValueByName('message', '') = 'ok' then

    begin

    memo2.Clear;

    aqjsonarr := aqjson.ItemByName('data');

    for i := 0 to aqjsonarr.Count - 1 do

    begin

    stime := aqjsonarr.Items[i].ValueByName('time', '');

    scontext := aqjsonarr.Items[i].ToString;

    Memo2.Lines.Add(stime+'----'+scontext);

    end;

    end;

    end;

    實(shí)際編碼中,會存在返回圖片到客戶端的情況,如果也采用JSON格式傳輸?shù)脑挘枰褕D片轉(zhuǎn)成Base64格式的傳包裝,然后再傳輸?shù)娇蛻舳私馕觥?/P>

    這里是一個(gè)演示,首先把圖片轉(zhuǎn)成流:

    Image1.Picture.Graphic.SaveToStream(ss);

    然后編碼成base64格式的:

    EncodeStream(ss, ss1);

    注意ss和ss1的定義:

    var

    ss: TMemoryStream;

    ss1,ss2 : TStringStream;

    EncodeStream的調(diào)用需要引用EncdDecd.pas單元。

    然后把流轉(zhuǎn)成字符串

    var

    sdata : string;

    begin

    ...

    sData := ss1.DataString;

    ...

    end;

    再把該字符串包裝到JSON串:

    var

    aqjson : TQJSON;

    begin

    aqjson := TQJSON.Create;

    aqjson.Parse(memo3.Lines.Text);

    ...

    aqjson.AddArray('pic').Add.AsString :=sdata;

    ...

    end;

    這樣圖片就打包到JSON里面了,傳到客戶端以后,再反過來解析即可:

    ss2 := TStringStream.Create(aqjson.ItemByName('pic').Items[0].value);

    DecodeStream(ss2,ss);//將base64字符流還原為內(nèi)存流

    ss.Position := 0; // 必須

    Image2.Picture.Graphic.LoadFromStream(ss);

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:Delphi用QJSON解析JSON格式的數(shù)據(jù)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)