【发布时间】:2019-03-18 09:06:53
【问题描述】:
我的结构很大,参数超过 50 个
type Application struct {
Id int64 `json:"id"`
FullName string `json:"fullName,omitempty"`
ActualAddress string `json:"actualAddress,omitempty"`
.....
}
我使用 gin-gonic,当我返回 application 时,我需要省略一些参数,我创建了一个函数,它使一些参数 (playLink) 为空,然后 gin 返回正确的 json(没有不必要的值)。我听说反射不是快速操作,所以在我们的例子中,我们可以使用很多丑陋的 if-else 或 switch-cases。有没有比反射更快、比 if-else 更漂亮的解决方案?
问题是结构参数具有非空值,因此它们不会被 gin 省略。这就是为什么我创建了一个函数来让一些参数在返回之前为空
【问题讨论】:
-
不清楚你想要什么。您想从 JSON 输出中省略字段吗?
,omitempty选项已经做到了。 -
@icza 请检查 UPD
-
您要省略的字段是否始终相同?说在您的示例中,您是否总是需要从
Application的json 中省略两个字段"FullName", "ActualAddress"?还是需要在某些情况下保留它们,而在其他情况下省略其他字段? -
@mkopriva 不一样,在另一种情况下省略一组参数
-
如果您的目标只是在 JSON 中省略这些值,请将这些字段的 json 标记设置为
-。
标签: go struct reflection go-gin