前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Delphi xe使用TJSONObject解析JSON数据

Delphi xe使用TJSONObject解析JSON数据

作者头像
战神伽罗
发布2020-06-05 09:31:23
3.5K0
发布2020-06-05 09:31:23
举报
代码语言:javascript
复制

在Delphi 10 Seattle中重写 “ 使用TJSONObject分析JSON数据 ”。

由于不推荐使用某些方法,因此已对其进行了更改。

要使用TJSONObject,请添加“ System.JSON”。

uses System.JSON;

使用TJSONObject.ParseJSONValue读取JSON数据。

const

Data: string = '{"name": "John Smith", "age": 33}';

var

JSONValue: TJSONValue;

JSONValue := TJSONObject.ParseJSONValue(Data);

将JSONValue转换为TJSONObject类型。

var

JSONObject: TJSONObject;

JSONObject := JSONValue as TJSONObject;

使用Count属性获取存储在JSON对象中的对数。

var

Size: Integer;

Size := JSONObject.Count; // => 2

使用Pairs属性获取对。

指定参数的索引。

当不存在此类元素时,Pairs属性返回nil。

var

JSONPair: TJSONPair;

JSONPair := JSONObject.Pairs[0];

使用TJSONPair对象的JsonString属性获取JSON对的名称部分,并使用JsonValue属性获取JSON对的值部分。

var

S, V: string;

S := JSONPair.JsonString.Value; // => name

V := JSONPair.JSONValue.Value; // => John Smith

如果不是字符串类型,请根据数据类型进行转换。

将TJSONNumber用于数字类型。

var

SC, VC: string;

NC: TJSONNumber;

Num: Integer;

JSONPair := JSONObject.Pairs[1];

SC := JSONPair.JsonString.ClassName; // => TJSONString

VC := JSONPair.JsonValue.ClassName; // => TJSONNumber

V := JSONPair.JsonValue.Value; // => 33

NC := JSONPair.JsonValue as TJSONNumber;

Num := NC.AsInt; // => 33

对于数组类型,请使用TJSONArray。

const

Data: string = '{"index": 1, "items": ["item 1", "item 2", "item 3"]}';

var

JSONValue: TJSONValue;

JSONObject: TJSONObject;

JSONPair: TJSONPair;

JSONArray: TJSONArray;

S: string;

Size, I: Integer;

begin

JSONValue := TJSONObject.ParseJSONValue(Data);

JSONObject := JSONValue as TJSONObject;

JSONPair := JSONObject.Pairs[1];

S := JSONPair.JsonString.Value; // => items

JSONArray := JSONPair.JSONValue as TJSONArray;

Size := JSONArray.Count; // => 3

for I := 0 to Size - 1 do

begin

JSONValue := JSONArray.Items[I];

S := JSONValue.Value;

end;

// for-inにも対応している

for JSONValue in JSONArray do

begin

S := JSONValue.Value;

end;

如果为布尔值,则为TJSONTrue或TJSONFalse。

const

Data: string = '[true, false]';

var

JSONValue: TJSONValue;

JSONArray: TJSONArray;

I: Integer;

begin

JSONValue := TJSONObject.ParseJSONValue(Data);

JSONArray := JSONValue as TJSONArray;

for I := 0 to JSONArray.Count - 1 do

begin

JSONValue := JSONArray.Items[I];

if JsonValue is TJSONTrue then

// True

WriteLn('True');

if JsonValue is TJSONFalse then

// False

WriteLn('False');

end;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档