本文整理自网络,侵删。
在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; // => nameV := JSONPair.JSONValue.Value; // => John Smith如果不是字符串类型,请根据数据类型进行转换。
将TJSONNumber用于数字类型。
var SC, VC: string; NC: TJSONNumber; Num: Integer; JSONPair := JSONObject.Pairs[1];
SC := JSONPair.JsonString.ClassName; // => TJSONStringVC := JSONPair.JsonValue.ClassName; // => TJSONNumberV := 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使用ixmlhttprequest 简单获取网页源代码
Delphi application.processmessage作用
更多相关阅读请进入《Delphi》频道 >>