从接口{}的地图中删除空的JSON值

时间:2016-02-09 12:55:11

标签: go

我有一个结构,我将所有多余的数据放入map[string]interface{}

如果我使用空变量解组到Data属性,我不想在编组时保留它。我基本上需要interface{}json:",omitempty",我该怎么做?

type Event struct {
    From string                 `json:"from"`
    Data map[string]interface{} `json:"data,omitempty"`
}

1 个答案:

答案 0 :(得分:0)

omitempty用于编码值,但不用于解码。

您无法在Go中生成完整的空地图。 (清空,因为它不存在。)如果你创建一个struct的变量/值,它总是有它的默认值。

package main

import "fmt"

func main() {
    var m map[string]interface{}
    fmt.Printf("%v %d\n", m, len(m))
    // prints: map[] 0
    m = nil
    fmt.Printf("%v %d\n", m, len(m))
    // prints: map[] 0
}

示例:Go Playground