douya7309 2014-02-23 17:38
浏览 344
已采纳

Golang Json.Marshal错误

I have been trying to encode a map into JSON but I have been unsuccessful so far. Json.Marshal is not encoding value, its just encoding the key.

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))
}

Output:

{"foo":{},"hello":{}}
  • 写回答

1条回答 默认 最新

  • douxia9826 2014-02-23 18:01
    关注

    Your properties and the type name are private, if you want your properties to be public you need to follow the convention of capitalizing each word e.g. (Value instead of value) to make it public, switch your type to this and it should serialize just fine.

    type Node struct {
        Value   string
        Expiry  float64
        Settime float64
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?