哪种 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 TJSONPair
的 JsonValue
,否则它 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
更清晰。
鉴于以下两行代码产生相同的输出,这两种方法中哪种更好?
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 TJSONPair
的 JsonValue
,否则它 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
更清晰。