golang--json使用笔记

Manrener · · 1100 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在json编码中,最麻烦的是json数组,下面记录一下我在json编码遇到的难题和解决的源代码:

如果要打包这种格式:

{"key":222,"msg":{"ed":"aaa","gf":"23.45","rs":"23"},"status":1}

代码如下:

package main

import (
	"encoding/json"
	"fmt"
)


func main() {
	
	t := make(map[string]interface{})
	t["ed"] = "aaa"
	t["rs"] = "23"
	t["gf"] = "23.45"
	res := make(map[string]interface{})
	res["status"] = 1
	res["key"] = 222
	res["msg"] = t
	body, err := json.Marshal(res)
	if err != nil {
		fmt.Println(err)
		return
	} else {

		fmt.Println(string(body))
	}
}



如果要打包如下格式:

{"key":222,"msg":[{"ed":"aaa","gf":"23.45","rs":"23"}],"status":1}

代码如下:

package main

import (
	"encoding/json"
	"fmt"
)
func main() {
	var rbody []map[string]interface{}
	t := make(map[string]interface{})
	t["ed"] = "aaa"
	t["rs"] = "23"
	t["gf"] = "23.45"
	rbody = append(rbody, t)
	res := make(map[string]interface{})
	res["status"] = 1
	res["key"] = 222
	res["msg"] = rbody
	body, err := json.Marshal(res)
	if err != nil {
		fmt.Println(err)
		return
	} else {

		fmt.Println(string(body))
	}
	
}


在解析json结构的时候,最麻烦是解析json数组,如解析:

{"key":222,"msg":[{"ed":"aaa","gf":"23.45","rs":"23"}],"status":1}

代码如下:

package main

import (
	"encoding/json"
	"fmt"
)

type tt struct {
	Key    int
	Msg    []msg
	Status int
}

type msg struct {
	Ed string
	Rs string
	Gf string
}

func main() {
	tests := tt{}
	body := `{"key":222,"msg":[{"ed":"aaa","gf":"23.45","rs":"23"}],"status":1}`
	jsonerr := json.Unmarshal([]byte(body), &tests)/*[]byte()是可以把string强制转换城byte*/
	if jsonerr != nil {
		fmt.Println(jsonerr)
		return
	}

	fmt.Println(tests.Key)
	fmt.Println(tests.Msg[0].Ed)
}




有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:Manrener

查看原文:golang--json使用笔记

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1100 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传