教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)

golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)

发布时间:2022-03-01   编辑:jiaochengji.com
教程集为您提供golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)等资源,欢迎您收藏本站,我们将为您提供最新的golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)资源

比如一本书有关的结构体

会有针对书整体,和针对书的每一个章节这样的结构体。

我们在章节里定义一个 book的指针,这样就可以通过某本书的某个章节信息可以获取到整本书相关的信息,比较方便。

比如说有这样一个需求,判断这本书的章节数量是否大于1,如果章节只有1章,那么不在每章的标题中添加章节数,也就是 “第一章”,“第二章”这种。

我们定义一个方法设定每一章标题,Chapter结构体中不知道章节数,除非我们增加一个整本书的章节数字段,这种方式如果我们还需要其他整本书有关的信息,还需要不断添加字段,冗余就比较大。

所以最好还是在Chapter中直接添加一个book指针字段,这样就可以随意访问整本书相关的所有信息了。

<pre><code class="lang-golang hljs">type Book struct { Title string Page int ChapterList []*Chapter } type Chapter struct { Title string Page int book *Book } </code></code></pre>

此时如果你想把book保存为json文件,调用Json.Marshal方法的时候,它会对指针也进行展开,这里的情况时book里展开有chapter的指针,chapter里展开有book的指针,就这样不断循环展开程序就不断把内存占满,造成电脑卡死。

有两种方法可以让json序列化忽略某个字段,避免这种指针循环展开卡死的情况

<ol><li>

小写的变量名是匿名变量,Json.Marshal不会进行解析

</li> <li><pre><code class="lang-go hljs">在字段的后面添加下面的json注释 `json:"-"` </code></code></pre></li> </ol> 到此这篇关于“ golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang json忽略解析字段的两个方法 (golang json 序列化含有父节点指针的结构体时电脑跑满内存卡死)
golang结构体tag的使用
Go 反射机制介绍
MySQL 5.7的JSON数据类型详解介绍
golang 面试题(从基础到高级)
go-面向对象编程(上)
golang string转int8_Golang从0到1
Go 语言设计模式系列之一 ——Go 语言中的面向对象
Go语言基础之结构体(面向对象编程上)
Golang 中的 Tags

[关闭]
~ ~