function TForm1.GetLangArray(const AJSONStr: String): TArray<String>;
var
AJSONVal, AJSONElem: TJSONValue;
AJSONArray: TJSONArray;
i: Integer;
begin
AJSONVal := TJSONObject.ParseJSONValue(AJSONStr);
AJSONVal := AJSONVal.P['languages'];
if (AJSONVal is TJSONArray) then
AJSONArray := AJSONVal as TJSONArray
else
Exit;
with AJSONArray do
begin
SetLength(Result, Count);
i := 0;
for AJSONElem in AJSONArray do
begin
Result[i] := AJSONelem.Value;
Inc(i);
end;
end;
end;
UPDATE
thanks to @RemyLebeau for the comment. I fixed the memory leak of previous code:
function TForm1.GetLangArray(const AJSONStr: String): TArray<String>;
var
AJSONVal, AJSONElem: TJSONValue;
AJSONArray: TJSONArray;
i: Integer;
begin
AJSONVal := TJSONObject.ParseJSONValue(AJSONStr);
try
AJSONArray := AJSONVal.P['languages'] as TJSONArray;
with AJSONArray do
begin
SetLength(Result, Count);
i := 0;
for AJSONElem in AJSONArray do
begin
Result[i] := AJSONElem.Value;
Inc(i);
end;
end;
finally
AJSONVal.Free;
end;
end;