В мире веб-разработки JSON (JavaScript Object Notation) является одним из наиболее популярных форматов обмена данными. В JSON массивы объектов обозначаются квадратными скобками []. В контексте языка Delphi и его компонентов для работы с JSON, массивы объектов обрабатываются с помощью класса TJSONArray, который является частью библиотеки System.JSON.
Пример кода
Давайте рассмотрим пример кода, который демонстрирует обработку массива объектов JSON с использованием функции TJSONObject.ParseJSONValue. В примере представлены два варианта JSON-строк: одна, где объекты находятся на одном уровне, и вторая, где они заключены в общий объект User.
uses
..., System.JSON;
var
JSONStr, DateStr, NameStr: string;
JSONVal: TJSONValue;
JSONArr: TJSONArray;
JSONObj, JSONUser: TJSONObject;
I: Integer;
begin
JSONStr := '[{"date":"12/11/1990","name":"Delphi7"},{"date":"03/05/2012","name":"Delphi 10.4"}]';
JSONVal := TJSONObject.ParseJSONValue(JSONStr);
try
JSONArr := JSONVal as TJSONArray;
for I := 0 to JSONArr.Count-1 do
begin
JSONObj := JSONArr[I] as TJSONObject;
DateStr := JSONObj.GetValue('date').Value;
NameStr := JSONObj.GetValue('name').Value;
// Дополнительный код обработки
end;
finally
JSONVal.Free;
end;
end;
uses
..., System.JSON;
var
JSONStr, DateStr, NameStr: string;
JSONVal: TJSONValue;
JSONArr: TJSONArray;
JSONObj, JSONUser: TJSONObject;
I: Integer;
begin
JSONStr := '[{"User":{"date":"12/11/1990","name":"Delphi7"}},{"User":{"date":"03/05/2012","name":"Delphi 10.4"}}]';
JSONVal := TJSONObject.ParseJSONValue(JSONStr);
try
JSONArr := JSONVal as TJSONArray;
for I := 0 to JSONArr.Count-1 do
begin
JSONObj := JSONArr[I] as TJSONObject;
JSONUser := JSONObj.GetValue('User') as TJSONObject;
DateStr := JSONUser.GetValue('date').Value;
NameStr := JSONUser.GetValue('name').Value;
// Дополнительный код обработки
end;
finally
JSONVal.Free;
end;
end;
Подтвержденный ответ
В обоих примерах кода, после выполнения ParseJSONValue, результат будет TJSONValue, указывающий на TJSONArray, который содержит элементы TJSONObject. Для доступа к данным внутри этих объектов используется метод GetValue. Это позволяет извлечь строковые значения для ключей date и name, несмотря на различия в структуре JSON-строк.
Альтернативный способ доступа к элементам массива
В комментариях упоминается, что использование JSONArr.Items[I] вместо JSONArr[I] может быть предпочтительным для некоторых разработчиков из-за соглашения о том, что свойство Items является стандартным свойством для массивов в Delphi. Однако, в контексте TJSONArray, оба способа доступа к элементам массива являются корректными.
Заключение
При обработке JSON-массивов объектов в Delphi важно понимать структуру данных и правильно использовать методы класса TJSONObject и TJSONArray для извлечения и работы с данными. Правильный подход к парсингу и обработке JSON-данных обеспечивает надежность и эффективность вашего кода.
Приведены примеры обработки массивов объектов JSON в Delphi с использованием классов `TJSONArray` и `TJSONObject`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.