首页 > 其他分享 >golang面试题:json包变量不加tag会怎么样?

golang面试题:json包变量不加tag会怎么样?

时间:2024-07-30 19:55:40浏览次数:18  
标签:面试题 string 大写 golang json tag 小写 转为

问题

json包里使用的时候,结构体里的变量不加tag能不能正常转成json里的字段?

怎么答

  • 如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。
  • 如果变量首字母大写,则为public。

不加tag,可以正常转为json里的字段,json内字段名跟结构体内字段原名一致。加了tag,从struct转json的时候,json的字段名就是tag里的字段名,原字段名已经没用。

举例

通过一个例子加深理解。

package main
import (
    "encoding/json"
    "fmt"
)
type J struct {
    a string             //小写无tag
    b string `json:"B"`  //小写+tag
    C string             //大写无tag
    D string `json:"DD"` //大写+tag
}
func main() {
    j := J {
      a: "1",
      b: "2",
      C: "3",
      D: "4",
    }
    fmt.Printf("转为json前j结构体的内容 = %+v\n", j)
    jsonInfo, _ := json.Marshal(j)
    fmt.Printf("转为json后的内容 = %+v\n", string(jsonInfo))
}



输出

转为json前j结构体的内容 = {a:1 b:2 C:3 D:4}
转为json后的内容 = {“C”:“3”,“DD”:“4”}

解释

结构体里定义了四个字段,分别对应 小写无tag,小写+tag,大写无tag,大写+tag。
转为json后首字母小写的不管加不加tag都不能转为json里的内容,而大写的加了tag可以取别名,不加tag则json内的字段跟结构体字段原名一致。

标签:面试题,string,大写,golang,json,tag,小写,转为
From: https://blog.csdn.net/jzpfbpx/article/details/140805316

相关文章

  • 大厂linux面试题攻略四之Linux网络服务(二)
     五、Linux网络服务-Apache优化1.请写出工作中常见的Apache优化策略Apache服务器优化是提升网站响应速度和稳定性的重要手段。在工作中,常见的Apache优化策略包括以下几个方面:1.启用压缩技术Gzip压缩:使用Gzip压缩技术可以减少服务器传输的数据量,从而提高网页加载速度。Gzi......
  • 在 html 上添加 json 数据(数据包含多种特殊字符),使用 JSON.stringify 读取 error
    letjsonObj=[{ "Name":"test" "Attach":"www!@#$%^&*(){}|:\"<>?,./;'[]\\"}]lethtml=jsonObj.map((i,v)=>{ letjsonStr=JSON.stringify(jsonObj) return`<trdata='${json......
  • 将字符串转换为json格式
    我有一个Excel电子表格,当我直接在python中读取它时,它失败了。所以我先在PowerQuery中读,然后在python中读,但是在PowerQuery中读时丢失了json双引号。我尝试了demjson3,但无法成功。我尝试用Python逐行阅读,这不是一个好主意。我希望能够在python中将其呈现为json。......
  • 超级好用的JSON可视化工具
    理想的在线JSON工具,应该支持快速格式化、可压缩、快捷复制、可下载导出,对存在语法错误的地方能明确显示。提供搜索定位功能,可视区足够大,最好支持全屏。经过多方面对比,以下工具能满足这个需求: 工具地址直达:在线JSON可视化工具工具支持全屏模式操作,通过搜索框可以快速进行查找,双......
  • 使用 json 列规范化 Dataframe
    您好,我正在寻找一种有效的方法来标准化包含json数据列的数据框。我从保存为数据帧的网站获取json响应。结构如下所示在此处输入图像描述我有3个标准列,第4列包含我想要规范化的json数据,并创建使用前3列中的值复制每行的行以及拆分的行第四列。如下......
  • Java修炼 Java SE 面试题目 (简答) 2024.7.26 22:16
    目录1.基础知识2.控制流和循环3.集合框架4.异常处理5.多线程编程6.输入输出操作7.类和接口8.Lambda表达式和函数式编程9.内存管理和垃圾回收:10.Java虚拟机(JVM):1.基础知识解释Java的面向对象特性,如封装、继承和多态。Java的面向对象特性包括封装(将数据和代码封......
  • 全网最全JAVA面试题,终于整理完了
    一、Java基础1、基础概念与常识Java语言有哪些特点?简单易学(语法简单,上手容易);面向对象(封装,继承,多态);平台无关性(Java虚拟机实现平台无关性);支持多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言却提供了多线程支持);可靠......
  • 我出一道面试题,看看你能拿 3k 还是 30k!
    大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行4个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中级(15k)还是高级(30k)!请听题: 题目MySQL数据库中的count(1)、count(*)、count(字段)有什么区别? 请回答......
  • 在指定的 json 边界内绘制 hexbin 截断
    我正在绘制一个单独的hexbin图和json边界文件。不过,hexbin网格与边界文件重叠。我只想展示非洲大陆。我的目标是在非洲大陆内切断或分割六边形网格因此,边界文件之外不应显示任何网格方块。有没有办法使用Plotly来实现这一点?预期的输出是截断或剪切非洲大陆之外的......
  • 为列表中的不同 JSON 模式模型定义约束
    我有一些JSON,其结构类似于下图所示。threshold列表表示类型可以是"type":"upper_limit"或"type":"range"的对象。请注意,"target"值应该是整数或浮点数,具体取决于对象的类型。{"name":"blah","......