Goland 使用教程 01:高效的处理 json 文本

yudotyang · 2022-01-04 21:00:59 · 2221 次点击 · 预计阅读时间 4 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2022-01-04 21:00:59 的文章,其中的信息可能已经有所发展或是发生改变。

大家好,我是Go学堂的渔夫子。

工欲善其事,必先利其器。今天我们讲解Goland是如何高效的处理json的。

01 将json直接转换成结构体

首先我们有一个段json格式的数据如下,看下Goland是如何快捷的转换成结构体的。

{
    "email": "noah.poulsen@example.com",
    "gender": "male",
    "first_name": "noah",
    "last_name": "poulsen",
    "location": {
      "street": "7998 oddenvej",
      "city": "nr åby",
      "state": "syddanmark",
      "postcode": 73617
    },
    "username": "purplesnake503",
    "password": "zelda",
    "picture": "img/41.jpg"
  }
  • 1.1 使用⌘ Cmd + C 复制该段json文本

  • 1.2 在Goland的文本编辑区域使用⌘ Cmd + V 粘贴刚才复制的json文本,这时,会弹出一个询问是否从JSON中生成Go类型的对话框,直接选择 yes。如下图:

  • 1.3 对结构体进行命名。将json文本转换成结构体后,鼠标会自动定位到结构体名字的位置,也就是初始状态是T的位置。这时,我们改变结构体的名字为User,然后按 Esc键完成对结构体名字的编辑。如下图:

02 将结构体内的内嵌结构体定义移动到外部

我们在上节看到,Location结构体的定义是在User结构体内部的,如果我们想将Location结构体的定义移动到User的外面该如何操作呢?

  • 2.1 首先将鼠标移动到Location的位置,然后使用Ctr + T快捷键操作,调出"Refactor This"菜单。如下图:

  • 2.2 在refactor This菜单中,我们发现有很多项,我们选择其中的"introduce type..."(引入类型...),其他项我们在后续使用中再逐一介绍。选择了该菜单项后,Location字段的结构体就会挪到User外面,并要求输入结构体名称。如下图:

  • 2.3 在新增定义的结构体中输入结构体的名称,我们这里叫Location,发现在User字段中Location字段的名称也随之改变。然后按 Esc键完成本次引入类型的操作。如下图所示。

03 使用⌥Opt+Enter快捷键快速更改tag中字段的命名风格

我们发现,在tag中,json的字段名称是用下划线格式风格的,如果我们想将其快速更改成驼峰式命名风格 该如何操作呢?

  • 3.1 首先将鼠标移动到tag字段处的位置,然后使用快捷键 ⌥Opt + Enter,可以调用出菜单项。 然后选择Change field name style in tags

  • 3.2 我们会看到很多种命名风格,这里我们选择fieldName。我们会发现在该结构体内tag的所有命名都更改成了驼峰式命名。如下图所示:

04 使用⌥Opt+Enter快捷键快速更新tag中的值

在上一节我们看到Opt+Enter键会弹出很多菜单选项。我们这里介绍在tag值中批量增加omitempty的操作。

  • 4.1 首先将鼠标移动到tag字段处的位置,然后使用快捷键 ⌥Opt + Enter,可以调用出菜单项。 然后选择Update key value in tags

  • 4.2 然后键入omitempty,结果将结构体中的所有tag值都加上了omitempty值。如下图所示:

05 使用⌥Opt+Enter快捷键在tag中快速添加key

同样,我们使用Opt+Enter快捷键可以在tag中快速的添加key,例如xml,json等。

  • 5.1 首先将鼠标移动到tag字段处的位置,然后使用快捷键 ⌥Opt + Enter,可以调用出菜单项。 然后选择Add key to tags

  • 5.2 然后键入xml,结果将结构体中的所有tag值都加上了xml的key。如下图所示:

总结

本文总结了在Goland中通过快捷键的方式操作json相关的操作。其中在使用Opt+Enter快捷键的菜单选项中,还有很多相关的功能,大家在实际使用中可以尝试,熟练使用,以提高工作效率,节省时间。


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2221 次点击  
加入收藏 微博
3 回复  |  直到 2022-01-17 09:20:23
fengjian1993
fengjian1993 · #1 · 3年之前

为什么我复制文本不会有解析为结构体的提示?

yudotyang
yudotyang · #2 · 3年之前
fengjian1993fengjian1993 #1 回复

为什么我复制文本不会有解析为结构体的提示?

你的Goland版本发下

xuesongtao
xuesongtao · #3 · 3年之前

学习了,自己实现了个Go 工具集推荐下😁,在线转换工具

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传