JSON 之 SuperObject(5): Format 与转义字符

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses SuperObject;

//Format
procedure TForm1.Button1Click(Sender: TObject);
var
  jo: ISuperObject;
begin
  jo := SO(‘{"Name":"张三", "Age":88, "Tel":["111,222"], "Children":{"Name":"张继"}}‘);

  ShowMessage(jo.Format(‘姓名: %Name%; 年龄: %Age%‘));

  ShowMessage(jo.Format(‘%Tel%; %Tel[0]%; %Tel[1]%‘));

  ShowMessage(jo.Format(‘%Children%; %Children.Name%‘));

  ShowMessage(jo.Format(‘[Name], [Age]‘, ‘[‘, ‘]‘)); {可更换默认的 % 标记}
end;

//特殊字符
procedure TForm1.Button2Click(Sender: TObject);
var
  jo: ISuperObject;
begin
  jo := SO;

  { \u }
  jo := SO(‘"\u0041\u0042\u0043"‘);
  ShowMessage(jo.AsString);

  { \x }
  jo := SO(‘"\x41\x42\x43"‘);
  ShowMessage(jo.AsString);

  { \u 汉字}
  jo := SO(‘"\u4e07\u4e00"‘);
  ShowMessage(jo.AsString);

  { \u 后面的数字可大写 }
  jo := SO(‘"\u4E07\u4E00"‘);
  ShowMessage(jo.AsString);

  { \\、\/ }
  jo := SO(‘"A\\B\/C"‘);
  ShowMessage(jo.AsString);

  { \t、\n 还有 \b、\f、\r }
  jo := SO(‘"A\tB\nC"‘);
  ShowMessage(jo.AsString);

  { \"" }
  jo := SO(‘"\"ABC\""‘);
  ShowMessage(jo.AsString);

  { null 是 JSON 的一种数据类型, 代表空值, 空值也是值的一种 }
  jo := SO(‘[1,2,3,null]‘);
  ShowMessage(jo.AsString);
end;

end.
时间: 2025-01-16 02:11:07

JSON 之 SuperObject(5): Format 与转义字符的相关文章

JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry

通过 ISuperObject.AsObject 可获取一个 TSuperTableString 对象. TSuperTableString 的常用属性: count.GetNames.GetValues var   jo: ISuperObject;   jts: TSuperTableString; begin   jo := SO('{A:1, B:2, C:3, D:{x:4, y:5, z:6}}');   jts := jo.AsObject;   ShowMessage(IntTo

XE3随笔5:Format与转义字符

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     procedure Button1Click(Sender: TObject);     pro

JSON 之 SuperObject(17): 实例 - 借用 Google 实现全文翻译

调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原语言 + "%7C" + 目标语言 返回的数据格式如下, 可以用 responseData.translatedText 简单获取: { "responseData" : {"trans

JSON 之 SuperObject(4): 增、删、改

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Button3: TButton;     procedure Button1Click(Sen

JSON 之 SuperObject(15): 实例 - 模拟 Google 搜索

本例测试效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Memo1: TMemo;     Edit1: TEdit;     Button1: TButton;     procedure Button1Cl

JSON 之 SuperObject(16): 实例 - 解析 Google 关键字搜索排名

同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名. 我用 Delphi 为关键字得到的结果是: window.google.ac.h( ["Delphi",[ ["delphi 教程", "375,000 结果", "0"], ["delphi盒子", &q

JSON 之 SuperObject(1)

一直盼着 Delphi 能够直接支持 "正则表达式" 与 "JSON"; Delphi 2009 刚来的时候, 有了 JSON, 但不好, 那时尝试过一点. 这是以前的链接: 什么是 JSON? Delphi 2010 带了两个相关单元: DBXJSON.DBXJSONReflect 貌似很强大, 但主要是给 DataSnap 准备的; 尝试了半天, 也很失望: 可能给 DataSnap 网络数据传递够用了, 但太简陋了, 好像是没写完, 对中文支持也有问题. 我想

JSON 之 SuperObject(7): 可以省略的双引号

在 JSON 中, 字符串应该在双引号中; 从上个例子才发现: 原来这个双引号可以省略, 有空格都行 当然只是在程序代码中可以省略, 对象会自动识别添加的. 即如此, 下面写法都可以: uses SuperObject; procedure TForm1.Button1Click(Sender: TObject); var   jo1,jo2,jo3: ISuperObject; begin   jo1 := SO('{"Name":"张三", "Age&

JSON 之 SuperObject(8): 关于乱码的几种情况 - 向 Henri Gourvest 大师报告

这几天学习 JSON - SuperObject, 非常幸运地得到了其作者 Henri Gourvest 大师的同步指点! (Henri 大师也是 DSPack 和 GDI+ 头文件的作者; 大师是法国人, 竟能用中文给我回复, 没想到!). 学习中发现 SuperObject 有些地方对中文(或者说 Unicode)支持不是所期望的, 现在专贴提出来供大师鉴别. 以下例子都会出现乱码, 虽然都可以有变通的方案, 但如果不乱码就太好了! unit Unit1; interface uses