小编典典

Delphi:访问JSON数组中的JSON对象

sql

我有一个JSON对象,让我们将其命名为如下所示的jObject:

{
  "id": 0,
  "data": "[{DAT_INCL: \"08/03/2012 10:07:08\", NUM_ORDE: 1, NUM_ATND: 1, NUM_ACAO: 2, NUM_RESU: 3},
            {DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 2, NUM_ATND: 1, NUM_ACAO: 4, NUM_RESU: 5},
            {DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 3, NUM_ATND: 1, NUM_ACAO: 8, NUM_RESU: NULL}]"
}

如您所见,它包含两对,其中一个是具有三个对象的数组(在这种情况下,对象的数量是动态的),并且具有多个“键:值”(这些值没有变化,始终是相同的5个字段)
),我想将其插入到SQL数据库中,“键”为列,“值”为字段。问题是,如何分别访问每个对象?

在代码方面,我所做的是通过将包含此数组的对放入jPair中来提取它。

jPair := OriginalObject.Get(1);

然后捕获数组

jArray:= TJSONArray(jPair.JsonValue);

(此外,作为奖励,当我评估jArray.Size时,结果为6226004。是什么?)


阅读 918

收藏
2021-03-17

共1个答案

小编典典

如果您有来自DBXJSON的数组,则为TJSONArray。调用其Get方法以获取数组的元素。

var
  Value: TJSONValue;

Value := jArray.Get(0);

您还可以for循环遍历整个数组:

for Value in jArray do

但是,如果您检查该Size属性并得到6226004而不是3,则表明这里还有其他问题。我的猜测是您认为不是一种TJSONArray真正的类型。用as做检查类型转换:

jArray := jPair.JsonValue as TJSONArray;

EInvalidCast如果失败,您将得到一个例外。

2021-03-17