0

我遇到了omitempty空值问题。请参阅这个操场示例。我有一个值,我不想在 marshal 期间被忽略 value ""。这明确意味着我想清除该值,因此我想要编组结果:

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

现在我在这里尝试了指针到字符串的方法,但由于某种原因我不喜欢这样。是否有任何已知的替代方案?例如,为什么我们没有一个标签(就像omitempty)like之类omitnull的?

编辑

为了澄清,见下文

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

}

我希望这个结构上的 marshal 函数的结果是:

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

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

结果应该是:

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

2 回答 2

2

如果您不想省略空值,只需删除omitempty标签

https://play.golang.org/p/6axA2OIG6O

于 2017-07-27T10:45:01.007 回答
1

关于您的最后评论(我没有足够的声誉来回复):

好的,这有效:play.golang.org/p/TYk67p6i_b但是我的结构定义中混合了字符串和 *string。而且我也不能在没有 的情况下“填充”值var emptyString = "",对吗?

看到这个(Golang:将 nil 字符串指针设置为空字符串)帖子

于 2017-07-27T17:36:07.480 回答