首页 > 其他分享 >Golang 中使用 JSON 的一些小技巧

Golang 中使用 JSON 的一些小技巧

时间:2024-10-24 11:34:45浏览次数:6  
标签:技巧 int struct json Value Golang JSON User string

临时忽略struct字段
type User struct {
Email string `json:"email"`
Password string `json:"password"`
// many more fields…
}
临时忽略掉Password字段

json.Marshal(struct {
*User
Password bool `json:"password,omitempty"`
}{
User: user,
})
临时添加额外的字段
type User struct {
Email string `json:"email"`
Password string `json:"password"`
// many more fields…
}
临时忽略掉Password字段,并且添加token字段

json.Marshal(struct {
*User
Token string `json:"token"`
Password bool `json:"password,omitempty"`
}{
User: user,
Token: token,
})
临时粘合两个struct
type BlogPost struct {
URL string `json:"url"`
Title string `json:"title"`
}

type Analytics struct {
Visitors int `json:"visitors"`
PageViews int `json:"page_views"`
}

json.Marshal(struct{
*BlogPost
*Analytics
}{post, analytics})
一个json切分成两个struct
json.Unmarshal([]byte(`{
"url": "[email protected]",
"title": "Attila's Blog",
"visitors": 6,
"page_views": 14
}`), &struct {
*BlogPost
*Analytics
}{&post, &analytics})
临时改名struct的字段
type CacheItem struct {
Key string `json:"key"`
MaxAge int `json:"cacheAge"`
Value Value `json:"cacheValue"`
}

json.Marshal(struct{
*CacheItem

// Omit bad keys
OmitMaxAge omit `json:"cacheAge,omitempty"`
OmitValue omit `json:"cacheValue,omitempty"`

// Add nice keys
MaxAge int `json:"max_age"`
Value *Value `json:"value"`
}{
CacheItem: item,

// Set the int by value:
MaxAge: item.MaxAge,

// Set the nested struct by reference, avoid making a copy:
Value: &item.Value,
})
用字符串传递数字
type TestObject struct {
Field1 int `json:",string"`
}
这个对应的json是 {"Field1": "100"}

容忍字符串和数字互转

如果你使用的是jsoniter,可以启动模糊模式来支持 PHP 传递过来的 JSON 

  1. import "github.com/json-iterator/go/extra"


原文链接:https://blog.csdn.net/kingmax54212008/article/details/77869972

标签:技巧,int,struct,json,Value,Golang,JSON,User,string
From: https://www.cnblogs.com/cheyunhua/p/18499266

相关文章

  • git 小技巧
    一、git撤回或修改之前提交并且不影响被撤回或修改提交之后的提交信息操作1.首先将指定分支克隆下来并备份gitclone-bxxxhttpxxxxx//xxx分支名cpxxxxxx_backup2.先备份对应提交的patch并移动到别的目录中,防止后续gitreset的时候清掉gitformat-match......
  • 设计测试用例编写技巧_
    一、查看用例的模板二、用例的要素讲解.编写用例的要素?用例编号,用例标题,前置条件,测试步骤,预期结果,优先级(必写)系统名称、模块名称、用例创建时间,实际结果,用例类型,执行时间,执行状态等(非必填项)三、详解测试用例要素(一)用例编号可以称为:用例id,测试编号,编号等(1)系统命名_模块名......
  • 编写测试用例技巧
    设计测试用例编写技巧一、查看用例的模板二、用例的要素讲解.编写用例的要素?用例编号,用例标题,前置条件,测试步骤,预期结果,优先级(必写)系统名称、模块名称、用例创建时间,实际结果,用例类型,执行时间,执行状态等(非必填项)=============================================三、详解测......
  • Java 解析 XML 转换为 Json
    我们使用Java开发项目时偶尔会需要使用到Xml文件的解析,一般情况下都会使用DOM4j、SAX、JDOM等方案,但这些方案比较代码编写较为繁琐。我们经常使用的Json进行数据传输或存储,如果能够将Xml快速转换为Json,将会大大减轻我们后续开发和维护的工作量。本篇博客简单介绍使用......
  • 每日一个Mac小技巧推荐之你不知道的常用快捷键
    Mac上有着非常多的快捷键,但是大部分人应该只知道使用复制粘贴,但其实快捷键的设计本身就是为了提高使用效率,只是查找起来非常的麻烦因此不被选择,今天为大家列举一些你不知道的快捷键,同时教大家如何能够快速的查看快捷键快速锁屏:control+command+Q退出应用程序:command+Q强制退......
  • 拴柱说Mac之Mac的高效使用技巧第三期
    Mac的设计有着非常多的使用技巧,这些技巧能够极大的提高你的使用效率,但是还是有许多人并不知道,那么今天Mac高效使用技巧分享第三期来了Mac有一个独特的设置,那就触发角,触发角有着非常多的妙用在“系统偏好设置-桌面与屏幕保护-触发角”里可以自定义Mac的显示屏,当光标移......
  • 6个关于JavaScript的超级技巧
    对象属性简写问题:将变量分配给对象属性可能会重复。解决方案:使用属性简写来简化对象创建。动态属性名称问题:使用动态属性名称创建对象可能很冗长。解决方案:使用计算属性名称动态创建对象属性。数组方法:map()、、filter()和reduce()问题:对数组进行迭代可能会重复。解决方案......
  • Kubernetes的yaml文件编写技巧
    一、了解YAML文件的基本结构YAML文件通常由以下四个关键部分组成:apiVersion:指定KubernetesAPI的版本。kind:指定要创建的资源类型。metadata:定义资源的元数据,如名称、命名空间等。spec:指定资源的规格和配置。二、掌握YAML格式的基本规范大小写敏感:YAML文件对大小写敏感。缩......
  • 考场得分技巧
    本文按照优先级排序。第一阶段(0h~1h)首先把所有题目看一遍,确保不会漏题。然后可以把每题的暴力分写出来,特别有把握的题可以写一下正解。此时大概已经过了一个小时。第二阶段(1h~2.5h)这时候应该写出1~2题了,可以来想一下剩下的最有把握的题。如果实在做不出来,可以考虑怎么......
  • 考场调试技巧
    对拍对拍的原理是:通过暴力程序和自己的程序输出对比来检查自己程序的错误。好打的模板:#include<cstdio>#include<cstdlib>intmain(){intT=100;while(T--){system("data.exe");//数据生成器将生成数据写入输入文件system("std.exe");//获取程序1......