JSON 嵌套对象在 rest 调试器和 RestResponse (XE6) 中显示为空

JSON nested object shows empty in rest debugger and RestResponse (XE6)

我使用 C++Builder XE6 Pro 并得到以下 JSON 响应(参见 full response here):

[
{
"id":"10186",
"dataset":"krs_podmioty",
"url":"https://api-v3.mojepanstwo.pl/dane/krs_podmioty/10186",
"mp_url":"https://mojepanstwo.pl/dane/krs_podmioty/10186",
"schema_url":"https://api-v3.mojepanstwo.pl/schemas/dane/krs_podmioty.json",
"global_id":"3157847",
"slug":"bank-millennium",
"score":12.13878,
"data":
{
  "krs_podmioty.nazwa_organu_reprezentacji":"ZARZĄD",
  "krs_podmioty.dotacje_ue_beneficjent_id":"0",
  "krs_podmioty.liczba_prokurentow":0,
  ...
  "gpw":true
}
...
]

我正在使用 REST 组件,但是当我尝试在 REST 调试器和 design/run-time 中解析它时,我得到 "dataset":"krs_podmioty" 元素的空值,但是 "gpw":true 元素正确显示。

我选择 JSON 根元素作为数据对象,并标记为嵌套 并将 NestedElementDepth 设置为 3。我也尝试了其他设置,但没有成功。

如何正确获取 "dataset":"krs_podmioty" 值?

这就是我读取这些值的方式:

uses
  System.Json;

procedure TForm1.Button1Click(Sender: TObject);
var
 jsonText: string;
 jsonArray: TJsonArray;
 dataObj: TJsonObject;
 Jobj: TJsonObject;
 krsPodmiotyNazwaOrganuReprezentacjiValue: TJsonValue;
 krsPodmiotyDotacjeUeBeneficjentIdValue: TJsonValue;
 krsPodmiotyLiczbaProkurentowValue: TJsonValue;
begin
 jsonText := '[{Your JSON content here}]';
 Jobj := TJSONObject.ParseJSONValue(jsonText) as TJsonObject;
 jsonArray :=Jobj.GetValue('Dataobject') as TJsonArray;
 dataObj := (jsonArray.Items[0] as TJsonObject).GetValue('data') as  TJsonObject;
  krsPodmiotyNazwaOrganuReprezentacjiValue := dataObj.GetValue('krs_podmioty.nazwa_organu_reprezentacji');
  krsPodmiotyDotacjeUeBeneficjentIdValue := dataObj.GetValue('krs_podmioty.dotacje_ue_beneficjent_id');
  krsPodmiotyLiczbaProkurentowValue := dataObj.GetValue('krs_podmioty.liczba_prokurentow');
  MessageDlg(krsPodmiotyNazwaOrganuReprezentacjiValue.Value, mtInformation, [mbOK], 0, mbOK);
  MessageDlg(krsPodmiotyDotacjeUeBeneficjentIdValue.Value, mtInformation, [mbOK], 0, mbOK);
  MessageDlg(krsPodmiotyLiczbaProkurentowValue.Value, mtInformation, [mbOK], 0, mbOK);
end;

但是,如果您没有使用 System.Json 命名空间中的任何内容,这可能无法回答您的问题。