嵌套的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. 总结: 仔细阅读文档很重要.

要回复问题请先登录注册