Delphi xe使用TJSONObject解析JSON数据


本文整理自网络,侵删。

 
在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;

相关阅读 >>

Delphi中使用可修改的常量

Delphi getprocesshandleasname 获取进程句柄

Delphi以二进制方式读取图片并显示出来

Delphi wmi 取显卡gpu信息

Delphi xe5 android 程序退出功能

Delphi firemonkey限制tedit只能输入数字的完美方法

如何用Delphi实现子目录级的文件查询

Delphi窗体固定在桌面上

Delphi中使用内联变量(inline variables) 的5个理由

Delphi的流操作的语法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...