2017-07-27 64 views
0

我遇到了omitempty和空值的問題。請參閱this playground example。我有一個價值,我不想在價值""的情況下在元帥身上被忽略。這明確地意味着,我要清除的價值,因此我希望能有整理結果:前往json,元帥空值

{"cf_objectType":"Product","cf_isLocked":"No","cf_ErrorMessage":""} 

現在我試着指針到字符串的方法here,但由於某些原因,我不喜歡這樣。有沒有其他的替代方法?例如,爲什麼我們沒有標籤(就像omitempty),比如omitnull什麼的?

編輯

爲了澄清,請參閱下面

m := Metadata{ 
    ObjectType: "Product", 
    Locked:  "No", 
    ErrorMessage: "", 

} 

我想在這個結構中的元帥函數的結果是:

{ 
    "cf_objectType":"Product", 
    "cf_isLocked":"No", 
    "cf_ErrorMessage":"" 
} 

m := Metadata{ 
    ObjectType: "Product", 
    Locked:  "No", 
} 

結果shoulde是:

{ 
    "cf_objectType":"Product", 
    "cf_isLocked":"No", 
} 
+0

你想要得到的結果是JSON?如果你刪除'ErrorMessage'的'omitempty',你會得到:'{「cf_objectType」:「Product」,「cf_isLocked」:「No」,「cf_errorMessage」:「」}' 你需要什麼? – Slavik

+0

看我編輯,這說明了更多。 –

+0

問題是,'ErrorMessage'被隱式初始化爲其零值''「''。因此,這兩個例子將*相同的數據*送入'Marshal',所以它們將總是*產生相同的輸出。如果你不喜歡使用'* string'(儘管你沒有說明原因),那麼即使有'omitnil',它也無濟於事 - 你不能有一個零字符串,只有一個零指針,所以你仍然需要使用一個指向字符串的指針。 – Adrian

回答