Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的结构没有整理成json_Json_Go - Fatal编程技术网

我的结构没有整理成json

我的结构没有整理成json,json,go,Json,Go,我在Mac OS X 10.8.2上使用Go 1.0.3,我正在试验json包,试图将结构封送到json,但我一直得到一个空的{}json对象 err值为nil,因此根据json.Marshal函数,没有任何错误,并且结构是正确的。为什么会这样 package main import ( "encoding/json" "fmt" ) type Address struct { street string extended string city string sta

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

err
值为nil,因此根据
json.Marshal
函数,没有任何错误,并且结构是正确的。为什么会这样

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("\n")
  fmt.Println(me)           // me is as expected, full of data
}

必须将要封送的字段公开。 像这样:

type Address struct {
  Street string
  Extended string
  City string
  State string
  Zip string
}
err
nil
,因为所有导出的字段(在本例中没有字段)都已正确编组

工作示例:


查看文档

注意,您还可以通过执行以下操作来操作生成的JSON中字段的名称:

type Name struct {
  First string `json:"firstname"`
  Middle string `json:"middlename"`
  Last string `json:"lastname"` 
}

JSON库无法查看结构中的字段,除非这些字段是公共的。就你而言

type Person结构{
姓名
年龄智力
地址
电话线
}
姓名、年龄、地址和电话字段不公开(以小写字母开头)。在golang中,变量/函数以大写字母开头时是公共的。因此,要使其工作,您的结构需要如下所示:

type Person结构{
姓名
年龄智力
地址
电话线
}

就是这样,我在“每个导出的结构字段”这一行上涂了一层。谢谢。谢谢你指出了“公共”。我喜欢这种关联结构和json对象的方式。