没有值时删除空值的元素

时间:2018-01-15 06:00:49

标签: go struct

我想在struct中删除空值的元素。我的脚本如下。此脚本的输出为{"keyA":{}}。我将omitempty用于KeyA和KeyB。但是剩下一个具有空值的元素。另一方面,没有显示KeyB。我想在有值时显示KeyA。我不想在没有值时显示KeyA。有没有办法做到这一点?

脚本

package main

import (
    "encoding/json"
    "fmt"
)

type sample struct {
    KeyA struct {
        Key1 string `json:"keyA1,omitempty"`
        Key2 string `json:"keyA2,omitempty"`
    } `json:"keyA,omitempty"`
    KeyB string `json:"keyB,omitempty"`
}

func main() {
    var s sample
    response, _ := json.Marshal(s)
    fmt.Println(string(response)) // {"keyA":{}}
}

非常感谢你的时间。我很抱歉我的问题不成熟。

1 个答案:

答案 0 :(得分:1)

尝试this

package main

import (
    "encoding/json"
    "fmt"
)
type KeyA struct {
    Key1 string `json:"keyA1,omitempty"`
    Key2 string `json:"keyA2,omitempty"`
} 
type sample struct {
    KeyA *KeyA  `json:"keyA,omitempty"`
    KeyB string `json:"keyB,omitempty"`
}

func main() {
    var s sample
    response, _ := json.Marshal(s)
    fmt.Println(string(response)) // {}
}

输出:

{}