我要怎么给引入的三方库结构体添加json格式化时候的小写字段呢,除了自己定义之外。谢谢各位。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
type Person1 struct { Name string json:"name" Age int json:"age" }
json:"name"
json:"age"
要么自定义结构体,把 Person 转成自己要的。要么自己用 reflect 实现一个 Marshal 方法。
Person
reflect
Marshal
要么自定义结构体,把 `Person` 转成自己要的。要么自己用 `reflect` 实现一个 `Marshal` 方法。
好的,谢谢。
type Person1 struct { Name string `json:"name"` Age int `json:"age"` }
也是可以的
三方库解君愁
package main import ( "fmt" "strings" jsoniter "github.com/json-iterator/go" "github.com/json-iterator/go/extra" ) func main() { err := test() if err != nil { panic(err) } } func test() error { type Person struct { Name string Age int } type Student struct { Person School string `json:"school"` Grade string `json:"grade"` } extra.SetNamingStrategy(strings.ToLower) // 设置名称转换规则 json := jsoniter.ConfigCompatibleWithStandardLibrary s1 := new(Student) s1.Name = "张三" s1.Age = 20 s1.School = "家里蹲大学" s1.Grade = "本科" b, err := json.Marshal(s1) if err != nil { return err } fmt.Println(string(b)) return nil }
结果:{"name":"张三","age":20,"school":"家里蹲大学","grade":"本科"}
三方库解君愁 ```go package main import ( "fmt" "strings" jsoniter "github.com/json-iterator/go" "github.com/json-iterator/go/extra" ) func main() { err := test() if err != nil { panic(err) } } func test() error { type Person struct { Name string Age int } type Student struct { Person School string `json:"school"` Grade string `json:"grade"` } extra.SetNamingStrategy(strings.ToLower) // 设置名称转换规则 json := jsoniter.ConfigCompatibleWithStandardLibrary s1 := new(Student) s1.Name = "张三" s1.Age = 20 s1.School = "家里蹲大学" s1.Grade = "本科" b, err := json.Marshal(s1) if err != nil { return err } fmt.Println(string(b)) return nil } ``` 结果:{"name":"张三","age":20,"school":"家里蹲大学","grade":"本科"}
谢谢,你这个好用,谢谢大佬,哈哈
张口就来,确定用reflect实现一个Marshal方法靠谱?确定要把标准库那一大坨自己写一遍?
@Neightly 你说话这么冲干啥?reflect 实现 Marshal 方法百度搜就有。我起码是回答问题,哪怕不好用,也确实是方法之一,有错吗?
哈哈,还记得你评论过 我俩互喷点事吧,你也被咬了吧 哈哈哈
你要是敢再多说几句,他会去你空间追着咬。
`单行代码`
type Person1 struct { Name string
json:"name"
Age intjson:"age"
}要么自定义结构体,把
Person
转成自己要的。要么自己用reflect
实现一个Marshal
方法。好的,谢谢。
也是可以的
三方库解君愁
结果:{"name":"张三","age":20,"school":"家里蹲大学","grade":"本科"}
谢谢,你这个好用,谢谢大佬,哈哈
张口就来,确定用reflect实现一个Marshal方法靠谱?确定要把标准库那一大坨自己写一遍?
@Neightly 你说话这么冲干啥?reflect 实现 Marshal 方法百度搜就有。我起码是回答问题,哪怕不好用,也确实是方法之一,有错吗?
哈哈,还记得你评论过 我俩互喷点事吧,你也被咬了吧 哈哈哈
你要是敢再多说几句,他会去你空间追着咬。