我一直在尝试将地图编码为JSON,但到目前为止我还没有成功。 Json.Marshal不是编码值,它只是对密钥进行编码。
https://gist.github.com/rahulpache/9174490
package main
import (
"encoding/json"
"fmt"
)
type node struct {
value string
expiry float64
settime float64
}
func main() {
var x = make(map[string]node)
x["hello"] = node{value: "world", expiry: 1, settime: 2}
x["foo"] = node{value: "bar", expiry: 1, settime: 2}
a, err := json.Marshal(x)
fmt.Println(string(a))
}
输出:
{"foo":{},"hello":{}}
答案 0 :(得分:9)
您的属性和类型名称是私有的,如果您希望自己的属性公开,则需要遵循大写每个单词 的惯例。 (值而不是值) 使其公开,将您的类型切换为此类型,它应该序列化很好。
type Node struct {
Value string
Expiry float64
Settime float64
}