当前位置: 首页 > 面试题库 >

为什么Golang无法使用前小写字符从struct生成json?

牟飞沉
2023-03-14
问题内容

我正在尝试从以下创建的结构中打印json结果:

type Machine struct {
  m_ip string
  m_type string
  m_serial string
}

并打印出来

m:= &Machine{ m_ip:"test", m_type:"test", m_serial:"test" }
m_json:= json.Marshal(m)
fmt.Println(m_json)

但是,结果仅返回{}

其次,我尝试将单词的第一个字母更改为大写,如下所示:

type Machine struct{
  MachIp string
  MachType string
  MachSerial string
}

而且有效!无论如何,为什么前面没有小写字母的单词呢?


问题答案:

Go用例确定在您的包上下文中特定标识符是公共标识符还是私有标识符。在您的第一个示例中,该字段不可见,json.Marshal因为它不是包含代码的包的一部分。当您将字段更改为大写时,它们变为公共字段,因此可以导出。

但是,如果您需要在JSON输出中使用小写的标识符,则可以使用所需的标识符标记字段。例如:

type Machine struct{
    MachIp     string `json:"m_ip"`
    MachType   string `json:"m_type"`
    MachSerial string `json:"m_serial"`
}


 类似资料:
  • 问题内容: 当我运行此代码时: 我懂了 哪个是正确的,所以我的问题是为什么它将雇员改为雇员?是否可以用大写E代替雇员打印? 这是我真正想要的: 谢谢! 问题答案: 您看到的行为是标准 JAXB(JSR-222) XML名称到Java名称转换算法的结果。 您可以使用注释指定名称: 我是 EclipseLink JAXB(MOXy)的 负责人,并且我们有一个扩展名,它使您可以覆盖您可能感兴趣的默认名称

  • 我试图从PEM字符串生成Golang中的私钥和公钥对象 这是我的PEM线 该pem。解码函数每次返回零我做错了什么?

  • 问题内容: 我正在尝试在表上创建一个外键,该键必须指向表内的列。但是当我尝试以下操作时,它不起作用。将不会产生。它只是在表内添加列名。 我究竟做错了什么?如何在表内部使外键指向表? 问题答案: 我认为您需要: 我把我的自动迁移声明放在这样 让我知道是否有帮助。

  • 问题内容: 有人可以给我展示一个如何使用Go 1 生成一个字符串的SHA哈希的工作示例吗? 文档页面缺少示例,我在Google上找不到任何有效的代码。 问题答案: 一个例子 : 在此示例中,我从字节数组进行着色。您可以使用以下方法获取字节数组 当然,如果不需要,您不需要在base64中进行编码:您可以使用Sum函数返回的原始字节数组。 下面的评论似乎有些混乱。因此,让我们为下一个用户阐明有关转换为

  • 问题内容: 这应该很简单: 这将导致错误: 0 strconv.ParseInt:解析“ 1250000.0000”:无效的语法 有什么线索吗? 问题答案: 仅适用于可解析为整数的字符串。 您需要的是parseFloat

  • 问题内容: 我想构造与OPENROWSET方法一起使用的查询。 例子: 但是当我这样做时,我得到了错误: ’+’附近的语法不正确 如何建立查询?谢 问题答案: 尽管in中的查询被指定为字符串,并且通过这种方式看起来非常像动态查询,但是语法不允许将其以同样的方式构造成一部分。 恐怕,您将必须构建一个动态查询,该查询将调用,如下所示: