download12749 2018-01-15 06:00
浏览 17
已采纳

没有值时删除具有空值的元素

I want to remove elements with empty value in struct. My script is below. Output of this script is {"keyA":{}}. I used omitempty to KeyA and KeyB. But an element with empty value is left. On the other hand KeyB is not shown. I want to show KeyA when it has values. I don't want to show KeyA when it has no values. Is there way to do this?

Script

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":{}}
}

Thank you so much for your time. And I'm sorry for my immature question.

  • 写回答

1条回答 默认 最新

  • doumie6223 2018-01-15 06:15
    关注

    Try 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)) // {}
    }
    

    output:

    {}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)