golang json omitempty 测试

本文测试了在Golang中JSON序列化时,哪些类型的空值会被忽略:空的slice、bool类型的false、空字符串以及空的map。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试那些会被忽略

package main

import (
	"encoding/json"
	"fmt"
)

type Struct struct {
	Map    map[string]interface{}  `json:"map,omitempty"`
	MapPtr *map[string]interface{} `json:"map_ptr,omitempty"`

	Slice    []int   `json:"slice,omitempty"`
	SlicePtr []*int  `json:"slice_ptr,omitempty"`
	Str      string  `json:"str,omitempty"`
	StrPtr   *string `json:"str_ptr,omitempty"`
	Bool     bool    `json:"bool,omitempty"`
	BoolPtr  *bool   `json:"bool_ptr,omitempty"`
}

func main() {
	var (
		i = 1
		b = true
		s = ""
	)
	var obj = Struct{
		Map:      map[string]interface{}{
			"a":"b",
		},
		MapPtr:   &map[string]interface{}{},
		Slice:    []int{1},
		SlicePtr: []*int{&i},
		Str:      "",
		StrPtr:   &s,
		Bool:     false,
		BoolPtr:  &b,
	}

	result, _ := json.Marshal(obj)
	fmt.Println("result = ", string(result))
}

测试结果:
如果是slice ,空的会被忽略
如果是bool类型,false 会被忽略
如果是string类型,空字符串会被忽略
如果是map类型,空的会被忽略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值