zoukankan      html  css  js  c++  java
  • JSON 之 SuperObject(2): 构建方式与 AsJSon


    SuperObject 构建一个 JSON 的常用方法: 从字符串、从文件、从流.

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses SuperObject;
    
    const JsonStr = '{"No1":"张三", "No2":"李四"}';
    
    //从字符串构建
    procedure TForm1.Button1Click(Sender: TObject);
    var
      jo: ISuperObject;
    begin
      jo := SO(JsonStr);
      {或者用使用下面语句, SO 函数就是调用了 TSuperObject.ParseString}
      //jo := TSuperObject.ParseString(JsonStr);
      ShowMessage(jo.AsJSon(True, False));
    end;
    
    //从文件构建
    procedure TForm1.Button2Click(Sender: TObject);
    const
      path = 'c:\temp\json.txt';
    var
      jo: ISuperObject;
    begin
      {产生个测试文件; SuperObject 对中文支持也不太好, 读取它自己保存的文件吧}
      SO(JsonStr).SaveTo(path); {这就产生并保存了 json 文件}
    
      jo := TSuperObject.ParseFile(path);
      ShowMessage(jo.AsJSon(True, False));
    end;
    
    //从流构建
    procedure TForm1.Button3Click(Sender: TObject);
    var
      jo: ISuperObject;
      stm: TStream;
      b: Byte;
    begin
      {模拟个测试流; 看看它能接受的编码够原始的, 它存取文件也是如此}
      stm := TStringStream.Create('{"No2":"\u674e\u56db","No1":"\u5f20\u4e09"}');
    
      jo := TSuperObject.ParseStream(stm);
      ShowMessage(jo.AsJSon(True, False));
    
      stm.Free;
    end;
    
    //AsJSon 的参数
    procedure TForm1.Button4Click(Sender: TObject);
    var
      jo: ISuperObject;
    begin
      jo := SO(JsonStr);
    
      ShowMessage(jo.AsJSon);
      ShowMessage(jo.AsJSon(True));
      ShowMessage(jo.AsJSon(True, False));
      ShowMessage(jo.AsJSon(False, False));
    end;
    
    end.
    
  • 相关阅读:
    [转]Delphi中进行延时的4种方法
    [转]delphi 删除动态数组的指定元素
    vue-transition-fade
    移动端list布局,左边固定,右边自适应
    移动端弹窗
    多行文字超出省略显示
    jsonp
    barba 页面渲染
    barba.js 优化页面跳转用户体验
    页面返回无刷新
  • 原文地址:https://www.cnblogs.com/del/p/1588622.html
Copyright © 2011-2022 走看看