gpt4 book ai didi

arrays - Delphi 7 中使用 JSON 进行数组处理

转载 作者:行者123 更新时间:2023-12-02 00:04:52 24 4
gpt4 key购买 nike

我收到的回复如下:

{
"successful": true,
"responseMessage": "OK",
"responseCode": 2000,
"messages": [
{
"messageId": "da86ede3-83de-4080-9c20-e8a335a7ac25",
"messageType": "MessageComposeSendNotification",
"queuedDateTime": 1402092032000,
"processAttemptCount": 0,
"processed": false
},
{
"messageId": "382556a3-0654-4a1c-9b54-8393097d9ec9",
"messageType": "RecordFileImport",
"queuedDateTime": 1410811005000,
"processAttemptCount": 1,
"processed": false
}
]
}

我只需执行 js.Field['successful'].value 就可以很好地访问前三个字段call 或其他字段名称。我现在需要访问Messages大批。我想做的是逐步执行 Messages 中的每一项。如果MessageType"RecordFileImport"我想保存MessageID到字符串列表。

现在我无法访问Messages 。我想我需要创建一个新的 tlkJSONObject或者可能是tlkJSONList访问其内容,但我似乎无法实例化该对象,并且不知道如何浏览项目。

我使用的是 Delphi 7 和 LkJSON v1.07。

最佳答案

Field[] 属性返回一个 TlkJSONbase 对象。您可以使用该属性来访问所有字段,甚至数组。访问 messages 字段时,您可以使用其 CountChild[] 属性,而不是使用其 Value 属性特性。例如:

var
js: TlkJSONbase;
Messages: TlkJSONbase;
MessageIDs: TStringList;
I: Integer;
begin
...
js := ...;
...
messages := js.Field['messages'];
MessageIDs := TStringList.Create;
try
for I := 0 to messages.Count-1 do
begin
if VarToStr(messages.Child[I].Field['messageType'].Value) = 'RecordFileImport' then
MessageIDs.Add(VarToStr(messages.Child[I].Field['messageId'].Value));
end;
...
finally
MessageIDs.Free;
end;
end;

或者,您可以将 messages 字段类型转换为 TlkJSONlist 并使用其 ForEach() 方法。例如:

procedure TMyClass.GetMessageIDs(ElName: string; Elem: TlkJSONbase; data: pointer; var Continue: Boolean);
begin
if VarToStr(Elem.Field['messageType'].Value) = 'RecordFileImport' then
TStringList(data).Add(VarToStr(Elem.Field['messageId'].Value));
end;

procedure TMyClass.ProcessJson;
var
js: TlkJSONbase;
Messages: TlkJSONlist;
MessageIDs: TStringList;
begin
...
js := ...;
...
messages := js.Field['messages'] as TlkJSONlist;
MessageIDs := TStringList.Create;
try
messages.ForEach(GetMessageIDs, MessageIDs);
...
finally
MessageIDs.Free;
end;
end;

关于arrays - Delphi 7 中使用 JSON 进行数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com