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.

JSON 之 SuperObject(2): 构建方式与 AsJSon的更多相关文章

  1. 彻底了解构建 JSON 字符串的三种方式

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7701856.html 前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax ...

  2. JSON工具类的构建(后端版本)

    前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 前后端耦 ...

  3. 【代码笔记】iOS-向服务器传JSON数据的两种方式

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  4. 查询json数据结构的8种方式

    查询json数据结构的8种方式 你有没有对“在复杂的JSON数据结构中查找匹配内容”而烦恼.这里有8种不同的方式可以做到: JsonSQL JsonSQL实现了使用SQL select语句在json数 ...

  5. JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry

    JSON 之 SuperObject(11): TSuperTableString.TSuperAvlEntry - 万一 - 博客园http://www.cnblogs.com/del/archiv ...

  6. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...

  7. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  8. spring接收json字符串的两种方式

    一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...

  9. jQuery异步获取json数据的2种方式

    jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: ...

随机推荐

  1. JAVA算法系列 冒泡排序

    java算法系列之排序 手写冒泡 冒泡算是最基础的一个排序算法,简单的可以理解为,每一趟都拿i与i+1进行比较,两个for循环,时间复杂度为 O(n^2),同时本例与选择排序进行了比较,选择排序又叫直 ...

  2. [转]layoutSubviews总结

    原文链接找不到了,转的时候别人也是转载的,但并未留下原创链接,就当是笔记了. ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size- (void)s ...

  3. 从maya导入物体 Importing Objects From Maya

    原地址:http://game.ceeger.com/Manual/HOWTO-ImportObjectMaya.html Unity natively imports Maya files. To ...

  4. Stacked injection--堆叠注入--堆查询注入

    Stacked injection--堆叠注入--堆查询注入 原文地址;http://www.sqlinjection.net/stacked-queries/   本篇属于集合原作者的思路和个人想法 ...

  5. jQuery实现表格隔行换色且感应鼠标高亮行变色

    jQuery插件实现表格隔行换色且感应鼠标高亮行变色 http://www.jb51.net/article/41568.htm jquery 操作DOM的基本用法分享http://www.jb51. ...

  6. iOS搜索栏

    百度云连接:http://pan.baidu.com/s/1pJLzDFX

  7. POJ 1665

    #include<iostream>//chengdacaizi 08.11.12 #include<iomanip> #define p 3.1415927 using na ...

  8. 唉,还是Windows好

    作为一个计算机专业的,常常抱怨Windows慢.一个系统用一段时间慢下来就重装,但是次次重装很麻烦,每次重装之后还得装软件. 另外,Windows比Linux占资源,所以前段时间就想以Linux为主要 ...

  9. ubuntu14.04安装MATLAB R2014a

    1. 首先现在matlab2014a,http://pan.baidu.com/s/1pJGF5ov [Matlab2014a(密码:en52).该文件下载解压后如下所示: 2. 解压解压包(用lin ...

  10. iOS复杂动画之抽丝剥茧(Objective-C & Swift)

    一.前言 随着开发者的增多和时间的累积,AppStore已经有非常多的应用了,每年都有很多新的APP产生.但是我们手机上留存的应用有限,所以如何吸引用户,成为产品设计的一项重要内容.其中炫酷的动画效果 ...