jjzjj

marshalling

全部标签

go - 使 marshar 从字符串失败

是否有可能在接收到一些字符串后在getJSONStr函数中使marshall失败?packagemainimport("fmt""encoding/json")typeobjstruct{Namestring`json:"name"`}funcgetJSONStr(sstring)(*string,error){t:=new(obj)t.Name=sb,err:=json.Marshal(t)iferr!=nil{returnnil,err}str:=string(b)return&str,nil}funcmain(){str,err:=getJSONStr("VALIDATE")fm

golang protobuf 编码(marshal)固定大小的空结构

我有一个protobuf结构Data在.proto中:messageData{uint64ID=1;uint32GUID=2;}在戈兰中b,err:=proto.Marshal(&pb.Data{})iferr!=nil{panic(err)}fmt.Println(len(b))我得到了0长度!无论pb.Data是什么,如何让proto.Marshal始终返回固定大小?附言。pb.Data只包含int64和int32 最佳答案 这里有两个问题1)protobuf对整数使用varint编码,因此大小取决于值,参见thislink2)

json - 嵌套结构的解码字段不起作用

给定以下结构typeFoostruct{Thingtime.Duration`json:"thing"`}typeBarstruct{FooEntrytime.Duration`json:"entry"`}我想自定义time.Duration格式并从json字符串加载Bar值,例如:{"thing":"hour","entry":"second"}所以我为Foo和Bar(https://play.golang.org/p/6v71eG_Xr98)覆盖了UnmarshalJSON:packagemainimport("encoding/json""fmt""time")typeFoost

go - 使用 golang 编码/解码 "enum"到 DynamoDB

我在go中有以下PartnerType“枚举”结构://PartnerTypeenumtypePartnerTypeintconst(//PartnerTypeUnknownshouldneverhappenPartnerTypeUnknownPartnerType=iota//PartnerTypeTesttestPartnerTypeTest)func(tPartnerType)String()string{names:=[...]string{"UNKNOWN","TEST"}iftPartnerTypeTest{returnnames[0]}returnnames[t]}//M

xml - 如何从 marshal 重新排序 xml 标签

我为其导出XML的程序似乎希望xml标签按照特定顺序排列,如下例所示data1data2data3data4在go中,我编码成如下所示的结构typexmlstruct{TagType1[]string`xml:"tagType1"`TagType2[]string`xml:"tagType2"`}当我将其编码退出时,它会对预期的标签进行排序,但这不是我需要的。data1data3data2data4有没有办法使用encoding/xml包来重现第一个示例中的输出?顺序不同。我读取了一个包含特定命令的xml文件,修改了数据并编码退出。我需要保留标签顺序。 最佳

json - 在 Go 中表示 JSON 策略

我想生成这个JSON策略:{"Statement":[{"Resource":"RESOURCE","Condition":{"DateLessThan":{"AWS:EpochTime":EXPIRES}}}]}我在下面展示的解决方案生成以下JSON:{"Statement":{"Resource":"example.com","Condition":{"DateLessThan":{"AWS:EpochTime":"1234543"}}}}如何更改此设置以便"Statement":具有数组值?packagemainimport("json""fmt")typeSstruct{Sta

json - 在匹配 Go 中的底层类型时将 JSON 解码为接口(interface)变量

我正在编写一个包装器来映射一些我需要的附加功能。一些最重要的事情是在保持通用性的同时编码和解码数据的能力。我设法使用encoding/gob编码器编写了一个编码器,但是如果编码的数据是人类可读的就更好了,我决定用JSON编写另一个实现。通过使用Register()向通用接口(interface)变量传递一个实现对象实例,我得到了从通用接口(interface)变量编码和解码的gob。(此资源帮助我了解了详细信息!http://www.funcmain.com/gob_encoding_an_interface)但是,JSON没有Register()。假设我们有一个类型的值typeCon

go - 为什么 json.Marshal 和 json.Unmarshal 有不同的签名

funcMarshal(vinterface{})([]byte,error)funcUnmarshal(data[]byte,vinterface{})error注意Marshal接受一个接口(interface)并返回一个[]byte作为输出,而Unmarshal接受一个[]byte并将输出直接写入输入参数数据是什么让设计与众不同相关问题:我认为使用输入参数可以在内存中保存一次(函数返回需要一个副本),golang中的每个赋值都是一个复制操作,所以看起来Unmarshal可以保存一个副本,但Marshal不能。所以我很困惑...... 最佳答案

go - 编码(marshal)嵌入式结构

我一直在研究嵌入的工作原理。http://play.golang.org/p/oHOim4G1-l当我编码Child结构时,它编码为{}。为什么要这样编码? 最佳答案 你的JSON字典是空的,因为结构的任何字段(或结构中嵌入的任何结构)都不是exported.如果您将字段名称更改为以大写字母开头,那么encoding/json模块将能够看到它们。当然,由于您还有名为Name和Value的方法,因此您需要将它们命名为其他名称以避免冲突。 关于go-编码(marshal)嵌入式结构,我们在S

json - Go 嵌套 Json Marshall 或编码

对于我的一个项目,我需要像下面这样编码成Json。我将所有值都作为变量。感谢您的帮助。{"id":[{"name":"Test","Class":[{"Grade":"2","id":"34"}]}],"age":"5"这是我试过的代码typeclassxstruct{Gradestring`json:"grade"`Idstring`json:"id"`}typeidxstruct{Namestring`json:"name"`Class[]classx}typeResponsestruct{Agestring`json:"age"`Id[]idx}但是出现错误“不能在字段值中使用c