主页 > 知识库 > Go语言设置JSON的默认值操作

Go语言设置JSON的默认值操作

热门标签:湛江crm外呼系统排名 重庆庆云企业400电话到哪申请 地图标注免费定制店 不封卡外呼系统 郑州智能语音电销机器人价格 上海极信防封电销卡价格 宁波语音外呼系统公司 宿迁便宜外呼系统代理商 仙桃400电话办理

给需要设置的JSON字段初试化你想设置的值就OK。

比如我想让[]string类型的字段的默认值是[],而不是nil,那我就make([]string, 0)赋值给该字段。

转成JSON输出后,就是[]。

1. 示例代码

这是没有初始化的代码。默认值是nil。

package main
import (
 "encoding/json"
 "fmt"
 "net"
 "net/http"
)
type JsonTest struct {
 Test1  string   `json:"test1"`
 Test2  []string  `json:"test2"`
}
//定义自己的路由器
type MyMux1 struct {
}
//实现http.Handler这个接口的唯一方法
func (mux *MyMux1) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 urlPath := r.URL.Path
 switch urlPath {
 case "/test":
 mux.testJson(w, r)
 default:
 http.Error(w, "没有此url路径", http.StatusBadRequest)
 }
}
func (mux *MyMux1) testJson(w http.ResponseWriter, r *http.Request) {
 if r.Method != "GET" {
 http.Error(w, "the method is not allowed", http.StatusMethodNotAllowed)
 }
 jsontest := JsonTest{}
 //只初始化Test1字段
 jsontest.Test1 = "value1"
 
 jsondata,_ := json.Marshal(jsontest)
 w.Header().Set("Content-Type", "application/json")
 fmt.Fprintf(w, "%s", jsondata)
}
func main() {
 //实例化路由器Handler
 mymux := MyMux1{}
 //基于TCP服务监听8088端口
 ln, err := net.Listen("tcp", ":8089")
 if err != nil {
 fmt.Printf("设置监听端口出错...")
 }
 //调用http.Serve(l net.Listener, handler Handler)方法,启动监听
 err1 := http.Serve(ln, mymux)
 if err1 != nil {
 fmt.Printf("启动监听出错")
 }
}

示例结果如下图1所示,字段Test2的默认值是nil。

以下是对[]string字段初始化的代码。默认输出值是[]。

func (mux *MyMux1) testJson(w http.ResponseWriter, r *http.Request) {
 if r.Method != "GET" {
 http.Error(w, "the method is not allowed", http.StatusMethodNotAllowed)
 }
 jsontest := JsonTest{}
 jsontest.Test1 = "value1"
 jsontest.Test2 = make([]string, 0)
 jsondata,_ := json.Marshal(jsontest)
 w.Header().Set("Content-Type", "application/json")
 fmt.Fprintf(w, "%s", jsondata)
}

示例结果如下图2所示。

2. 示例结果

3. 总结

其他字段想要设置默认输出值,只需要对其进行相应的初始化即可。

补充:golang json Unmarshal的时候,在key为空的时候给予默认值

我就废话不多说了,大家还是直接看代码吧~

package main
import (
 "fmt"
 "encoding/json"
)
type Test struct {
 A string
 B int
 C string
}
func (t *Test) UnmarshalJSON(data []byte) error {
 type testAlias Test
 test := testAlias{
 A: "default A",
 B: -2,
 }
 _ = json.Unmarshal(data, test)
 *t = Test(*test)
 return nil
}
var example []byte = []byte(`[{"A": "1", "C": "3"}, {"A": "4", "B": 2}, {"C": "5"}]`)
func main() {
  out := []Test{}
  _ = json.Unmarshal(example, out)
  fmt.Print(out)
}

结果

[{1 -2 3} {4 2 } {default A -2 5}]

可以看到 在key没有的情况下可以指定对应的值,这样就可以了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • golang xorm及time.Time自定义解决json日期格式的问题
  • golang 实现struct、json、map互相转化
  • Django-Scrapy生成后端json接口的方法示例
  • Golang 如何解析和生成json
  • 解决Django响应JsonResponse返回json格式数据报错问题

标签:安康 儋州 电子产品 西双版纳 青海 物业服务 海南 辽宁

巨人网络通讯声明:本文标题《Go语言设置JSON的默认值操作》,本文关键词  语言,设置,JSON,的,默认值,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Go语言设置JSON的默认值操作》相关的同类信息!
  • 本页收集关于Go语言设置JSON的默认值操作的相关信息资讯供网民参考!
  • 推荐文章