我遇到了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",
}
你想要得到的結果是JSON?如果你刪除'ErrorMessage'的'omitempty',你會得到:'{「cf_objectType」:「Product」,「cf_isLocked」:「No」,「cf_errorMessage」:「」}' 你需要什麼? – Slavik
看我編輯,這說明了更多。 –
問題是,'ErrorMessage'被隱式初始化爲其零值''「''。因此,這兩個例子將*相同的數據*送入'Marshal',所以它們將總是*產生相同的輸出。如果你不喜歡使用'* string'(儘管你沒有說明原因),那麼即使有'omitnil',它也無濟於事 - 你不能有一個零字符串,只有一個零指針,所以你仍然需要使用一個指向字符串的指針。 – Adrian