嵌套的map转json,怎么整,求助

type detail struct {
Total int64
Success int64
DelaySlice []int64
}

var nodeResult = struct {
result map[string]map[string]detail
host string
cpuage string
menuage string
}

这么复杂的结构不知道是谁设计的,现在要转成json分发给各个服务节点。
怎么转?求大神帮帮忙

已邀请:

singlethread - 5年老菜鸟,可以用任意语言写hello world,喜欢go

赞同来自: huhuyou2 梁昊

json包利用reflect来实现的,所以结构属性必须可以被json其他包访问,也就是公开的才行


package main

import (
"encoding/json"
"fmt"
)

type detail struct {
Total int64
Success int64
DelaySlice []int64
}

func main() {
nodeResult := struct {
result map[string]map[string]detail
host string
cpuage string
menuage string
}{}
nodeResult2 := struct {
Result map[string]map[string]detail
Host string
Cpuage string
Menuage string
}{}
buf1, err1 := json.Marshal(&nodeResult)
fmt.Println(string(buf1), err1)
buf2, err2 := json.Marshal(&nodeResult2)
fmt.Println(string(buf2), err2)
}

detailmap的属性本身就可以被访问,所以不用改

明_

赞同来自: huhuyou2

detail 结构每个字段后面,添加json:"total", modeResult 结构体后面 也是。

tupunco

赞同来自:

能被 json 序列化的节点必须 public.
如果想输出小写节点加 json:"total" tag, 如果要忽略节点加 json:"-" tag.
总结: 仔细阅读文档很重要.

要回复问题请先登录注册