草庐IT

Marshal3

全部标签

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

json - 单值上下文中的多值 json.Marshal()

这个问题在这里已经有了答案:Multiplevaluesinsingle-valuecontext(6个答案)Multiple-valueinsingle-valuecontextERROR(1个回答)StringtoFloat64:multiple-valuestrconv.ParseFloat()insingle-valuecontext(1个回答)关闭5年前。Here你可以看到这段代码:packagemainimport("fmt""encoding/json")funcmain(){map1:=map[string]map[string]interface{}{}map2:=m