arrays - 如何计算 Delphi 中 JSON 数组中元素的数量

标签 arrays json delphi count

我正在 Delphi 中访问 TJSONValue(使用 REST 组件和 Google Books 的 API)。我想知道数组中有多少个元素:'items'。 这是 JSONValue 的格式:

   "kind": "books#volumes",
   "totalItems": 221,
   "items": [
       {...},
       {...},
       {...}]

注意*“totalItems”不是指数组的大小。

我已经沿着这条线尝试了一些东西,但它引发了一个转换错误。

var
   JSONBook: TJSONValue;
   CountItems: integer;
begin
   JSONBook := RESTResponse1.JSONValue;

   ShowMessage(IntToStr(JSONBook.GetValue<string>('items').Length));
   CountItems := JSONBook.GetValue<string>('items').Length;

   for i := 0 to CountItems-1 do
   begin
     ...
   end;
end;

最佳答案

items 字段是一个数组,因此将其作为 string 检索是错误的,因此通过字符串长度读取数组计数是行不通的.

试试这个:

uses
  ..., System.JSON;

var
  JSONBook, JSONItem: TJSONObject;
  JSONItems: TJSONArray;
  CountItems: integer;
begin
  JSONBook := RESTResponse1.JSONValue as TJSONObject;
  JSONItems := JSONBook.GetValue('items') as TJSONArray;

  CountItems := JSONItems.Count;
  ShowMessage(IntToStr(CountItems));

  for i := 0 to CountItems-1 do
  begin
    JSONItem := JSONItems.Items[i] as TJSONObject;
    ...
  end;
end;

关于arrays - 如何计算 Delphi 中 JSON 数组中元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199209/

相关文章:

json - PostgreSQL 函数 : Return Multiple Rows as JSON

javascript - 听说过一个框架/应用程序只从数据库返回您需要的内容吗?

delphi - 如何将标签中的某些字符更改为粗体?

delphi - 如果使用不同的字符串编码,Delphi 是否自动处理格式字符串参数?

performance - Delphi - 如果用户仍在输入则延迟处理

Java:使用二元运算符比较两个数组

java - 在 Java 中我可以缩小数组以节省内存吗?

c++ - 查找字符串的所有可能排列

javascript - React/javascript 如何将 json 形式的表数据导出到可下载的 Excel 中

java - 分别比较两个数组元素的和