Go 利用map组合json格式数据

当你需要自定义json格式请求时,又不想通过结构体实现时,可以尝试通过map组合实现: 

package main

import (
    "fmt"
    "encoding/json"
    "time"
)

// 利用map组合json格式数据
func BuildJsonData() {
	req := make(map[string]interface{})
	req["City"] = "Beijing"
	req["PostCode"] = 100000
	req["Timestamp"] = time.Now().Unix()
	req["StudentInfo"] = map[string]interface{}{
		"School": "Tsinghua University",
		"Class":  "test",
		"StudentInfo": map[string]interface{}{
			"Name": "Bill",
			"Age":  25,
			"Sex":  "male",
		},
	}

	byteReq, err := json.Marshal(req)
	if err != nil {
		fmt.Println("json.Marshal err.")
		return
	}
	fmt.Println(string(byteReq))
}


func main() {
    BuildJsonData()
}

/* 输出如下:
{
  "City": "Beijing",
  "PostCode": 100000,
  "StudentInfo": {
    "Class": "test",
    "School": "Tsinghua University",
    "StudentInfo": {
      "Age": 25,
      "Name": "Bill",
      "Sex": "male"
    }
  },
  "Timestamp": 1604556065
}
*/

另外,想要利用反引号 "`" 构造更为复杂的多层嵌套json数据,示例如下:

func Example {    
    // 正确:
	userInfo := `{
		"City": "Beijing",
		"PostCode:": 100000,
		"StudentInfo": {
			"School": "Tsinghua University",
			"Class": "test",
			"StudentInfo": {
				"Name": "Bill",
				"Age": 25,
	 		"Sex": "male"
			}
		},
		"Timestamp": "123456789"
	}`
    
    // 带数组 [] 的示例:
	userInfo := `{
		"City": "Beijing",
		"PostCode:": 100000,
		"StudentInfo": {
			"School": "Tsinghua University",
			"Class": "test",
			"StudentInfo": 
			[ 
				{
					"Name": "Bill",
					"Age": 25
				},
				{	
					"Name": "Bill's brother",
					"Age": 52
				}
			]
		},
		"Timestamp": "123456789"
	}`

    // 错误示例:
    // userInfo := `{
	// 	"City": "Beijing",
	// 	"PostCode:": 100000,
	// 	"StudentInfo": {
	// 		"School": "Tsinghua University",
	// 		"Class": "test",
	// 		"StudentInfo": {
	// 			"Name": "Bill",
	// 			"Age": 25,
	// 			"Sex": "male"
	//  		},	// error: 当前json及其子json结构内的最后一个字段末尾不加 ",".
	// 	}    // 这行末尾要加",".
	// 	"Timestamp": "123456789"
	// }`
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值