zoukankan      html  css  js  c++  java
  • Delphi使用JSON

           JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

           Delphi7中不支持JSON文件的解析,可以下载LkJSON(一个JSON的解析文件),然后进行解析。例如

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1
    = class(TForm)
    Button1: TButton;
    memo1: TMemo;
    Memo2: TMemo;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation
    uses uLkJSON,PerlRegEx;

    {$R *.dfm}

    procedure listarray(returnval: string; memo: Tmemo);
    var
    json, item: TlkJSONbase;
    i: integer;
    list: TlkJSONObject;
    str: TlkJSONstring;
    begin
    json :
    = TlkJSON.ParseText(returnval);
    for i := 0 to pred(json.Count) do
    begin
    item :
    = TlkJSONObject(json).child[i];
    // This is the named array, name in name, the array in Objvalue
    Memo.Lines.Add(TlkJSONobjectmethod(item).name);
    // list:=TlkJSONobject(TlkJSONobjectmethod(item).Objvalue);
    end;
    end;

    procedure getlist(returnval: string; memo: Tmemo);
    var
    Jstart: TlkJSONbase;
    jAddr: TlkJSONList;
    s:
    string;
    begin
    Jstart :
    = TlkJSON.ParseText(returnval) as TlkJSONobject;
    //Jstart.field 为jbase时,
    s :
    = vartostr(Jstart.Field['mac'].Field['lv'].Value);
    memo.Lines.add(s);
    //Jstart.field 有子数据为jslist时
    s :
    = vartostr(Jstart.Field['ranch'].Field['ranchs'].Child[1].field['hp'].Value);
    memo.Lines.add(s);
    end;

    procedure getlist1(returnval: string; memo: Tmemo);
    var
    Jstart: TlkJSONbase;
    jAddr: TlkJSONList;
    s:
    string;
    begin
    Jstart :
    = TlkJSON.ParseText(returnval) as TlkJSONobject;
    //Jstart.field 为jbase时,
    s :
    = vartostr(Jstart.Field['list'].Field['key'].Value);
    memo.Lines.add(s);
    //Jstart.field 有子数据为jslist时
    s :
    = vartostr(Jstart.Field['list'].Field['script'].field['main'].Field['key'].Value);
    memo.Lines.add(s);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    vJsonObj: TlkJsonObject;
    vJsonStr:
    string;
    begin
    memo1.Lines.Clear;
    Memo2.Lines.Clear;
    vJsonObj :
    = TlkJSONstreamed.loadfromfile('d:\json2.txt') as TlkJsonObject;
    vJsonStr :
    = TlkJSON.GenerateText(vJsonObj);
    memo1.Text :
    = vjsonstr;
    listarray(memo1.Text, memo2);
    Memo2.Lines.Add(
    '');
    getlist(memo1.Text, memo2);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    vJsonObj: TlkJsonObject;
    vJsonStr:
    string;
    begin
    memo1.Lines.Clear;
    Memo2.Lines.Clear;
    vJsonObj :
    = TlkJSONstreamed.loadfromfile('d:\json.txt') as TlkJsonObject;
    vJsonStr :
    = TlkJSON.GenerateText(vJsonObj);
    memo1.Text :
    = vjsonstr;
    listarray(memo1.Text, memo2);
    Memo2.Lines.Add(
    '');
    getlist1(memo1.Text, memo2);
    end;
    end.

    其中json.txt文件内容为:

    {
     "ranch":
     {"lv":"10","fg":"433","fd":"440","j":"2","ranchs":
      [{"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"0","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"1","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"2","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"3","stat":"0","item":"1014","fif":"0"},
       {"tti":46800,"ti":5053,"we":"0","wo":"0","ar":"4","ph":1,"num":57,"or":57,"hp":"100","se":"3","pt":38,"st":0,"id":"4","stat":"0","item":"1014","fif":"1"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"5","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"6","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"7","stat":"0","item":"1014","fif":"0"},
       {"tti":0,"ti":0,"we":"0","wo":"0","ar":"0","ph":6,"num":56,"or":57,"hp":"100","se":"2","pt":38,"st":0,"id":"8","stat":"0","item":"1014","fif":"0"},
       {"tti":46800,"ti":5048,"we":"0","wo":"0","ar":"4","ph":1,"num":57,"or":57,"hp":"99","se":"3","pt":38,"st":0,"id":"9","stat":"0","item":"1014","fif":"1"},
       {"tti":46800,"ti":5050,"we":"0","wo":"0","ar":"4","ph":1,"num":57,"or":57,"hp":"96","se":"3","pt":38,"st":0,"id":"10","stat":"0","item":"1014","fif":"1"},
       {"id":"11","stat":"0","item":"0","fif":"0"}]
     },
     "de":[],
     "pi":
     {"id":"1054966","uid":"26905522","n":"pan","lv":"26","exp":15886,"gg":"620564","db":"50","gold":0,"etn":21870,"sc":"156","gc":"195",
       "ac":
       {"sp":4370,"id":12}},"gc":"0","task":{"tid":"0","ti":"5","ht":0},"nc":1,"df":0,"mac":{"lv":"12","exp":989,"en":"133.00"},
        "npt":
          ["501","502","508","509","510","521","504","505","507","520","512","511","513","522","524","525","515","516","514","523","526"],
        "sks":
          [{"id":101,"lv":"1"},{"id":100,"lv":"1"},{"id":102,"lv":"1"}],
       "wt":"3",
       "lu":{"fl":0},
       "re":{"c":-1},
       "ti":1263460473,
       "sn":"happyRanchZone",
       "cmd":1002
      }
     }
    }

    json2.txt文件内容为:

    {
     "list":
     {
      "key":"fkey",
      "class":"compeditor",
      "caption":"公司信息",
      "showtype":1,
      "script":{
       "main":{"key":11100003,"step":1}
      }
     },
     "editer":
     {
      "caption":"公司信息"
     }

  • 相关阅读:
    ES6 常用总结(前端开发js技术进阶提升总结)
    web前端之es6对象的扩展
    ES6数组及对象遍历的新增方法 entries(),keys() 和 values()
    关于日期
    最近遇到的几个小东西
    求模
    同步 异步请求的认识
    变量名和函数名声明提升
    机顶盒前端开发小结
    js节点使用 碎片节点
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2072178.html
Copyright © 2011-2022 走看看