I'm having problems with omitempty
and empty values. Please see this playground example. I have a value which I don't want to be ignored during marshal in case of value ""
. This explicitly means that I want to clear the value and therefore I want to have marshalled result:
{"cf_objectType":"Product","cf_isLocked":"No","cf_ErrorMessage":""}
Now I tried the pointer-to-string approach here, but for some reason I don't like this. Are there any alternatives known? For example, why don't we have a tag (just like omitempty
) like omitnull
or something?
EDIT
To clarify, see below
m := Metadata{
ObjectType: "Product",
Locked: "No",
ErrorMessage: "",
}
I want the result of the marshal function on this struct to be:
{
"cf_objectType":"Product",
"cf_isLocked":"No",
"cf_ErrorMessage":""
}
AND
m := Metadata{
ObjectType: "Product",
Locked: "No",
}
result shoulde be:
{
"cf_objectType":"Product",
"cf_isLocked":"No",
}
With regard to your last comment (for which I don't have enough reputation to reply to):
Ok, this works: play.golang.org/p/TYk67p6i_b But then I have a mix of string and *string in my struct definition. And I also can't "fill" the value without having the
var emptyString = ""
, right?
See this (Golang: set nil string pointer to empty string) post
If you don't want to omit empty values, just remove omitempty
tag