类型转换无效 JSON

Invalid typecast JSON

当我尝试执行以下代码时出现“Invalid Class TypeCast”错误。错误发生在突出显示的行上。

procedure TFMLogin.Button1Click(Sender: TObject);
var
  jsonObj, jSubObj: TJSONObject;
  ja: TJSONArray;
  jv: TJSONValue;
  i, j, k: Integer;
begin
  Memo2.Clear;
  Fconex.datarax('/users.json');
  Memo2.Text:=FConex.ResponseJson;
  jsonObj := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(memo2.Text), 0) as TJSONObject;
  ShowMessage('converted');

  for j := 0 to jsonObj.Size - 1 do
    //  if jsonObj.Get(j).JsonString.Value = 'users' then
  begin
    jv := jsonObj.Get(j).JsonValue;
    ShowMessage('1');
    ja := jv as TJSONArray; // <------------ ERROR
    ShowMessage('1.5');
    for i := 0 to ja.Size - 1 do
    begin
      jSubObj := (ja.Get(i) as TJSONObject);
      ShowMessage('2');
      for k := 0 to jSubObj.Size - 1 do
      begin
        if jSubObj.Get(k).JsonString.Value = 'mac' then
        begin
          memo3.lines.add(jSubObj.Get(k).JsonValue.Value);
          ShowMessage('3');
        end;
      end;
    end;
  end;
end;

JSON到read/treat是这样的:

{
  "beg@hotmailcom":{
    "email":"beg@hotmail.com",
    "mac":"20-47-47-FE-97-DA",
    "pid":"true",
    "to":" 21/06/2022"
  },
  "fg@hotmail.com":{
    "email":"fg@hotmail.com",
    "mac":"20-47-47-FE-97-DA",
    "po":"true",
    "to":" 21/06/2022"
  }
}

最近,我在数组中使用了这个 JSON 文件读取语法并继续工作。但是,在这个例子中,出现了这个错误。

TJSONValue 是所有 JSON class 定义字符串、对象、数组、数字、布尔值、真、假、和空值。

要将任何 JSONValu 类型转换为其任何后代,JSONValue 应具有兼容类型。

在您给出的示例JSON中,没有数组。因此,无法进行请求的类型转换。

你的 JSON 应该是这样的,上面的类型转换才能正确发生。

{
  "beg@hotmailcom":["beg@hotmail.com","20-47-47-FE-97-DA", "true", " 21/06/2022"]
  
}