草庐IT

go - 编码(marshal)/解编码(marshal) reflect.Type

我创建了map[string]interface{}并且我想通过2个重置服务之间的映射传递多种类型。每次我编码时,我都会在应该包含reflect.Type的字段中得到空映射。ServiceType:map[]有可能吗?用于测试的代码:(KeyValuePair将代表map的单个值)并且MessageService可以替换为任何类型的类(class)data:=GenericHandlers.KeyValuePair{Key:"ServiceType",Value:reflect.TypeOf(MessageService.MessageService{})}Json,_:=json.M

go - 结构的 Json 编码(marshal)映射导致空对象

我定义了一个简单的对象:typeLinkstruct{Hrefstring`json:"href"`Titlestring`json:"href,omitempty"`}typeFoostruct{Linksmap[string]Link`json:"_links"`}foo:=new(Foo)foo.Links=make(map[string]Link,0)foo.Links["self"]=Link{Href:"/href"}将其编码为JSON后,我期望:{"_links":{"self":{"href":"/href"}}}但我得到的是:{"_links":{"self":{}}

go - 防止 json.Marshal time.Time 删除尾随零

我有类似下面的代码packagemainimport("fmt""time""encoding/json")typeMessagestruct{Timetime.Time`json:"timestamp,omitempty"`}funcmain(){t,_:=time.Parse("2006-01-02T15:04:05.999Z07:00","2017-05-01T15:04:05.630Z")msg:=Message{Time:t,}bs,_:=json.Marshal(msg)fmt.Println(string(bs[:]))}这打印{"timestamp":"2017-05-

json - 忽略 JSON Marshal 上不支持的类型错误

这是我的代码:funcdump(wio.Writer,valinterface{})error{je:=json.NewEncoder(w)returnje.Encode(val)}typeexamplestruct{NamestringFuncfunc()}funcmain(){a:=example{Name:"Gopher",Func:func(){},}err:=dump(os.Stdout,a)iferr!=nil{panic(err)}}程序将出现json:unsupportedtype:func()panic我的问题是,如何将任何内容编码为json,忽略那些编码无法处理的内

json.Marshal 返回奇怪的结果

我正在尝试将go结构转换为JSON。我以为我知道该怎么做,但我对这个程序的输出感到困惑。我错过了什么?packagemainimport"fmt"import"encoding/json"typeZoostruct{namestringanimals[]Animal}typeAnimalstruct{speciesstringsaysstring}funcmain(){zoo:=Zoo{"MagicalMysteryZoo",[]Animal{{"Cow","Moo"},{"Cat","Meow"},{"Fox","???"},},}zooJson,err:=json.Marshal(

json - 如何在 JSON 中自定义编码(marshal)映射键

我无法理解自定义编码int到string的奇怪行为。这是一个例子:packagemainimport("encoding/json""fmt")typeIntintfunc(aInt)MarshalJSON()([]byte,error){test:=a/10returnjson.Marshal(fmt.Sprintf("%d-%d",a,test))}funcmain(){array:=[]Int{100,200}arrayJson,_:=json.Marshal(array)fmt.Println("array",string(arrayJson))maps:=map[Int]bo

json - 为什么 json.Marshal 似乎生成了一个整数数组?

我正在努力研究Go语言,但我遇到了这个简单示例的第一个绊脚石:packagemainimport("encoding/json""fmt")typeMyStructurestruct{Integerint`json:"integer"`Labelstring`json:"label"`}funcmain(){ms:=&MyStructure{9001,"over9000"}msjson,_:=json.Marshal(ms)fmt.Println(msjson)//expect:{"integer":9001,"label":"over9000"}}我的输出如下:[1233410511

json - golang : Marshal []os. FileInfo 到 JSON

基本上,我想要实现的是通过os.ReadDir()获取目录的内容,然后将结果编码成json。直接执行json.Marshal()没有异常,但给了我一个空结果。所以我尝试了这个:func(f*os.FileInfo)MarshalerJSON()([]byte,error){returnf.Name(),nil}然后Go告诉我os.FileInfo()是一个接口(interface),不能这样扩展。执行此操作的最佳方法是什么? 最佳答案 将数据打包成一个可以序列化的结构:http://play.golang.org/p/qDeg2bf

go - 相当于 json marshal 的 Stringer

我可以实现Stringer来指定fmt.Print()如何将我的自定义类型写入字符串。jsonmarshal有等效项吗?我想在go中存储唯一值,并在json中将其表示为一个slice。在go中使用slice并不是最佳选择。这个O(n)插入似乎是不必要的-二叉树或映射会更快,特别是因为我一直保持列表排序。 最佳答案 是的,json.Marshaler和json.Unmarshaler.实现MarshalJSON和UnmarshalJSON会给你想要的东西。 关于go-相当于jsonmars

json - 如何在 Go json marshal 中显示空对象而不是空结构或 nil

在为结构指针执行json.Marshal()时,我需要显示json的空对象{}。我只能输出null值或空结构值。如果person键用&Person{}或new(Person)填充,它将显示如下所示的空结构:{"data":{"person":{"name":"","age":0},"created_date":"2009-11-10T23:00:00Z"}}如果我们根本不初始化它,它将显示null。{"data":{"person":null,"created_date":"2009-11-10T23:00:00Z"}}我想显示"person":{}。可能吗?完整代码去Playgrou