我有一个休息请求课程如下
TRedeemItemsClass = class
private
[JSONName('RedeemCode')]
FRedeemCode: String;
[JSONName('AssetKey')]
FAssetKey:String;
public
property RedeemCode: String read FRedeemCode write FRedeemCode;
property AssetKey:String read FAssetKey write FAssetKey;
function ToJsonString: string;
class function FromJsonString(AJsonString: string): TRedeemItemsClass;
end;
implementation
function TRedeemItemsClass.ToJsonString: string;
begin
result := TJson.ObjectToJsonString(self);
end;
class function TRedeemItemsClass.FromJsonString(AJsonString: string): TRedeemItemsClass;
begin
result := TJson.JsonToObject<TRedeemItemsClass>(AJsonString)
end;
jObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(reqRedeem.ToJsonString), 0) as TJSONObject;
使用这行代码,我得到了像
这样的json请求字符串{&#34; RedeemCode&#34;:&#34;&#34;&#34; AssetKey&#34;:&#34;为XXXXX&#34;}
正如所料。
兑换请求正文json字符串应该是其中之一( 根据客户提供的信息 assetkey 或 redeemcode )
{&#34; RedeemItems&#34;:[{&#34; AssetKey&#34;:&#34;为XXXXX&#34;}]}
或
{&#34; RedeemItems&#34;:[{&#34; RedeemCode&#34;:&#34;为XXXXX&#34;}]}
所以在短期内,我想忽略空或零的所有字段(包括数组)。
我使用的是Delphi 10 Seattle。
答案 0 :(得分:1)
您只需检查nil
条件:
if Assigned(field) then
begin
// do something
end;
或强>
if field <> nil then
begin
// do something
end;
答案 1 :(得分:0)
您可以使用:
function TRedeemItemsClass.ToJsonString: string;
begin
result := TJson.ObjectToJsonString(self, TJsonOption.joIgnoreEmptyStrings]);
end;