Golang Json.Marshal错误

时间:2014-02-23 17:38:02

标签: json go marshalling

我一直在尝试将地图编码为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":{}}

1 个答案:

答案 0 :(得分:9)

您的属性和类型名称是私有的,如果您希望自己的属性公开,则需要遵循大写每个单词 的惯例。 (值而不是值) 使其公开,将您的类型切换为此类型,它应该序列化很好。

type Node struct {
    Value   string
    Expiry  float64
    Settime float64
}