我有一个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。是什么?)
如果您有来自DBXJSON的数组,则为TJSONArray。调用其Get方法以获取数组的元素。
TJSONArray
Get
var Value: TJSONValue; Value := jArray.Get(0);
您还可以for循环遍历整个数组:
for
for Value in jArray do
但是,如果您检查该Size属性并得到6226004而不是3,则表明这里还有其他问题。我的猜测是您认为不是一种TJSONArray真正的类型。用as做检查类型转换:
Size
as
jArray := jPair.JsonValue as TJSONArray;
EInvalidCast如果失败,您将得到一个例外。
EInvalidCast