我的结构没有编组到 json [英] My structures are not marshalling into json

查看:23
本文介绍了我的结构没有编组到 json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Mac OS X 10.8.2 上使用 Go 1.0.3,我正在试验 json 包,试图将结构编组为 json,但我一直得到一个空的 {} json 对象.

I am using Go 1.0.3 on Mac OS X 10.8.2, and I am experimenting with the json package, trying to marshal a struct to json, but I keep getting an empty {} json object.

err 值为 nil,所以根据 json.Marshal 函数没有问题,结构正确.为什么会发生这种情况?

The err value is nil, so nothing is wrong according to the json.Marshal function, and the struct is correct. Why is this happening?

package main

import (
  "encoding/json"
  "fmt"
)

type Address struct {
  street string
  extended string
  city string
  state string
  zip string
}

type Name struct {
  first string
  middle string
  last string
}

type Person struct {
  name Name
  age int
  address Address
  phone string
}

func main() {
  myname := Name{"Alfred", "H", "Eigenface"}
  myaddr := Address{"42 Place Rd", "Unit 2i", "Placeton", "ST", "00921"}
  me := Person{myname, 24, myaddr, "000 555-0001"}

  b, err := json.Marshal(me)

  if err != nil {
    fmt.Println(err)
  }

  fmt.Println(string(b))    // err is nil, but b is empty, why?
  fmt.Println("
")
  fmt.Println(me)           // me is as expected, full of data
}

推荐答案

您必须将要编组的字段设为公开.像这样:

You have to make the fields that you want to marshal public. Like this:

type Address struct {
  Street string
  Extended string
  City string
  State string
  Zip string
}

errnil 因为所有导出的字段(在本例中没有)都被正确编组.

err is nil because all the exported fields, in this case there are none, were marshalled correctly.

工作示例:https://play.golang.org/p/9NH9Bog8_C6

查看文档 http://godoc.org/encoding/json/#Marshal

这篇关于我的结构没有编组到 json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆