XSuperObject是适用于FileMonkey平台的JSON解析组件,能够在Android,IOS,MACOS,WINDOWS等多个平台使用

点击下载

Sample JSON

{
"name":"Onur YILDIZ",
"vip":true,
"telephones":["000000000","111111111111"],
"age":24,
"size":1.72,
"adresses":[
{
"adress":"blabla",
"city":"Antalya",
"pc":7160
},
{
"adress":"blabla",
"city":"Adana",
"pc":1170
}
]
}

Delphi Code

var
X:ISuperObject;
begin
X :=TSuperObject.Create('{}');
X.S['name']:='Onur YILDIZ';
X.B['vip']:=true;
with X.A['telephones']do
begin
Add('');
Add('');
end;
X.I['age']:=;
X.F['size']:=1.72;
with X.A['adresses'].O[]{AutoCreate}do
begin
S['adress']:='blabla';
S['city']:='Antalya';
I['pc']:=;
end;
// or
X.A['adresses'].O[].S['adress']:='blabla';
X.A['adresses'].O[].S['city']:='Adana';
X.A['adresses'].O[].I['pc']:=;

Super Expression

const
JSON ='{ "o": { '+
' "1234567890": {'+
' "last use date": "2010-10-17T01:23:20",'+
' "create date": "2010-10-17T01:23:20",'+
' "name": "iPhone 8s"'+
' }'+
' },'+
' "Index": 0, '+
' "Data": {"Index2": 1}, '+
' "a": [{'+
' "last use date": "2010-10-17T01:23:20",'+
' "create date": "2010-11-17T01:23:20",'+
' "name": "iPhone 8s",'+
' "arr": [1,2,3] '+
' }, '+
' {'+
' message: "hello"'+
' }]'+
'}'; var
X:ISuperObject;
NewJSon:ISuperObject;
NewArray:ISuperArray;
begin
X := SO(JSON);
ShowMessage( X['o."1234567890"."last use date"'].AsString);
ShowMessage( X['a[Index]."create date"'].AsString);
ShowMessage( X['a[Data.Index2].message'].AsString);
X['a[0].arr'].AsArray.Add('test1');
// -----
NewJSON:= X['{a: a[Index], b: a[Data.Index2].message, c: o."1234567890".name, d: 4, e: a[0].arr[2], f: " :) "}'].AsObject;
NewArray:= X['[a[Index], a[Data.Index2].message, Data.Index2, Index, 1, "1", "test"]'].AsArray;
end;

Variant

var
X:ISuperObject;
begin
X :=TSuperObject.Create;
X.V['A']:=;
X.V['B']:='';
X.V['C']:=1.3;
X.V['D']:=False;
X.V['E']:=Null;
Memo1.Lines.Add(X.AsJSON);
end;

Output

{"A":1,"B":"2","C":1.3,"D":false,"E":null}

Sample 2

const
JSN ='{ '+
' "adresses": [ '+
' { '+
' "adress": "blabla", '+
' "city": "Antalya", '+
' "pc": 7160 '+
' },'+
' { '+
' "adress": "blabla", '+
' "city": "Adana", '+
' "pc": 1170 '+
' } '+
' ] '+
'}';
var
X,Obj:ISuperObject;
J:Integer;
begin
X :=TSuperObject.Create(JSN);
with X.A['adresses']do
for J := to Lenght-1do
begin
Obj:= O[J];
Obj.First;
whilenotObj.EoFdo
begin
Memo1.Lines.Add(Obj.CurrentKey+' = '+VarToStr(Obj.CurrentValue.AsVariant));
Obj.Next;
end;
Memo1.Lines.Add('------');
end;
end;

OR (Enumerator)

var
X:ISuperObject;
AMember,
OMember:IMember;
begin
X :=TSuperObject.Create(JSN); forAMemberin X.A['adresses']do
begin
forOMemberinAMember.AsObjectdo
Memo1.Lines.Add(OMember.Name+' = '+OMember.ToString); Memo1.Lines.Add('------');
end;

Output

adress = blabla
city =Antalya
pc =7160
------
adress = blabla
city =Adana
pc =1170

Marshalling

type

  TTestSet=(ttA, ttB, ttC);

  TTestSets=set of TTestSet;

  TSubRec= record
A:Integer;
B:String;
end; TSubObj=class
A:Integer;
B:Integer;
end; TTest=class// Field, Property Support
private
FB:String;
FSubObj:TSubObj;
FSubRec:TSubRec;
FTestSets:TTestSets;
public
A:Integer;
B:TTestSet;
C:Boolean;
property D:String read FB write FB;
property E:TSubRec read FSubRec write FSubRec;
property F:TSubObj read FSubObj write FSubObj;
property G:TTestSets read FTestSets write FTestSets;
end; TTestRec= record // Only Field Support
A:Integer;
B:TTestSet;
C:Boolean;
D:String;
E:TSubRec;
F:TSubObj;
G:TTestSets;
end; implementation
... var
Parse:TTest;// For Class;
S:String;
begin
Parse:=TTest.FromJSON('{"A": 1, "B": 0, "C": true, "D": "Hello", "E":{"A": 3, "B": "Delphi"}, "F": {"A": 4, "B": 5}, "G": [0,2]}');
S :=Parse.AsJSON;
end; ...
var
Parse:TTestRec;// For Record;
S:String;
begin
Parse:=TSuperRecord<TTestRec>.FromJSON('{"A": 1, "B": 0, "C": true, "D": "Hello", "E":{"A": 3, "B": "Delphi"}, "F": {"A": 4, "B": 5}, "G": [0,2]}');
S :=TSuperRecord<TTestRec>.AsJSON(Parse);
end;
  

适用于Firemonkey的Json解析对象XsuperObject使用方法介绍的更多相关文章

  1. IOS中Json解析的四种方法

    作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验 ...

  2. JSON 解析的两种方法

    今天帮朋友看了下JSON解析结果············· eval解析JSON中的注意点 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. ...

  3. 【转】IOS中Json解析的四种方法

    原文网址:http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有 ...

  4. iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson

    相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...

  5. 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

    全局引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象 目标对象 = JavaScriptCon ...

  6. Flutter实体与JSON解析的一种方法

    vs code作为编辑器 1. 首先,json对象与字符串的转换是使用json.encode和json.decode的,需要导入import 'dart:convert'; 这里主要的自然不是这个,而 ...

  7. 04_关于元数据,ResultSetMetaData对象以及API方法介绍

     ResultSetMetaData对象 元数据,可以理解为数据的数据 Jdbc中的元数据是指数据库.表.列的定义信息. ResultSetMetaData对象表示结果集ResultSet对象的元 ...

  8. GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换

    GeoJson的生成与解析 一.wkt格式的geometry转成json格式 二.json格式转wkt格式 三.json格式的数据进行解析 四.Java读写geojson 五.geotools读取sh ...

  9. 超详细JSON解析步骤

    JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...

随机推荐

  1. Hadoop伪分布模式配置

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 请先按照上一篇文章H ...

  2. hdu 1698 线段树 区间修改

    #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #includ ...

  3. 在JavaScript中判断整型的N种方法

    原文:http://www.cnblogs.com/YcYYcY/p/3759184.html 整数类型(Integer)在JavaScript经常会导致一些奇怪的问题.在ECMAScript的规范中 ...

  4. FIN_WAIT1 能持续多久?你知道吗

    FIN_WAIT1 能持续多久?你知道吗 2016-01-12 运维帮 原文:http://blogread.cn/it/article/7215?f=wb&luicode=10000359 ...

  5. asp.net @reqister指令

    @register指令通过声明将自定义 ASP.NET 服务器控件添加到页或用户控件中. 1.@register 指令有两种用法如下 <%@ Register tagprefix="t ...

  6. 当你碰到一个网络中有多个PXE Server 肿么办?

    今天在用PXE 安装Openstack Compute节点时,郁闷得发现同一网段中还有一个PXE Server,而我的Compute 启动起来总会先找到它,但那个设置不受我控制,子网也不归我管,那个s ...

  7. 条件随机场CRF简介

    http://blog.csdn.net/xmdxcsj/article/details/48790317 Crf模型 1.   定义 一阶(只考虑y前面的一个)线性条件随机场: 相比于最大熵模型的输 ...

  8. Using an Interface as a Type

    When you define a new interface, you are defining a new reference data type. You can use interface n ...

  9. C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Team Foundation\4.0\Cache\VersionControl.config is not valid and cannot be loaded.

    Recently, we experienced a strange problem with TFS 2010. We spent a few days before we figured it o ...

  10. To Use Ubuntuubunt

    1.rename PC; modify the /etc/hostname. 2.Use root account; 1.set the password for root account: sudo ...