哪种 JSON 方法更适合使用:Get() 或 GetValue()?

Which JSON method is better practice to use: Get() or GetValue()?

鉴于以下两行代码产生相同的输出,这两种方法中哪种更好?

TJSONArray *resultsArray = (TJSONArray*) response->Get("results")->JsonValue;

TJSONArray *resultsArray = (TJSONArray*) response->GetValue("results");

GetValue() 在功能上与调用 Get()->JsonValue 相同,但在访问其 JsonValue.

之前需要额外检查以确保请求的密钥确实存在

TJSONObject 有一个受保护的 GetPairByName() 方法,如果找到,return 是指向所请求密钥的 TJSONPair 对象的指针,或者 NULL 如果找不到密钥。

Get() 简单地调用 GetPairByName() 和 return 指针 as-is:

function TJSONObject.Get(const Name: string): TJSONPair;
begin
  Result := GetPairByName(Name);
end;

如果您确定密钥存在,使用 Get()->JsonValue 是绝对安全的。但是,如果密钥可能不存在,您需要在访问 TJSONPair 的任何成员之前检查 NULL 的 return 值。

GetValue() 仅在找到密钥时调用 GetPairByName() 和 returns returned TJSONPairJsonValue,否则它 returns NULL:

function TJSONObject.GetValue(const Name: string): TJSONValue;
var
  LPair: TJSONPair;
begin
  LPair := GetPairByName(Name);
  if LPair <> nil then
    Result := LPair.JSONValue
  else
    Result := nil;
end;

如果密钥可能不存在,调用 GetValue() 而不是 Get()->JsonValue 更清晰。