【问题标题】:Golang Json.Marshal errorGolang Json.Marshal 错误
【发布时间】:2014-02-23 17:38:01
【问题描述】:

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

【问题讨论】:

  • 结构字段必须导出(以大写字母开头)

标签: json go marshalling


【解决方案1】:

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

type Node struct {
    Value   string
    Expiry  float64
    Settime float64
}

【讨论】:

  • 如果您希望您的封送 JSON 使用小写标签,请考虑将 json 标签添加到结构中。您可以重新标记数据以使用所需的任何标签。这是一些文档 - 它适用于编组和解组:golang.org/pkg/encoding/json/#Marshal
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 2021-01-02
  • 2015-11-29
  • 2017-02-22
相关资源
最近更新 更多