2016-02-15 73 views
1

我休息請求的類如下德爾福對象JSON字符串如何忽略空和空字段

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請求字符串

{ 「RedeemCode」: 「」, 「AssetKey」: 「XXXXX」}

如預期的那樣,

兌換請求體JSON字符串要麼(根據來自客戶assetkeyredeemcode接收的信息 )

{ 「RedeemItems」 這些中的一個:[{ 「AssetKey」:「XXXXX 「}]}

{」 雷德emItems「:[{」RedeemCode「:」xxxxx「}]}

因此,在短期內,我想忽略所有空或零的字段(包括數組)。

我正在使用Delphi 10 Seattle。

+0

你必須建立JSON的 「手動」 或爲此寫一個攔截器 –

+0

看看這個問題:h TTP://stackoverflow.com/questions/12168982/json-empty-array – Machado

回答

1

你可以簡單地檢查它的nil條件:

if Assigned(field) then 
begin 
    // do something 
end; 

if field <> nil then 
begin 
    // do something 
end; 
0

您可以使用:

function TRedeemItemsClass.ToJsonString: string; 
begin 
    result := TJson.ObjectToJsonString(self, TJsonOption.joIgnoreEmptyStrings]); 
end;