草庐IT

Unmarshalling

全部标签

json - 如何告诉 json.Unmarshal 使用结构而不是接口(interface)

我想编写一个函数来接收几种类型的结构并从JSON中解码它们。为此,我有另一组函数具有返回结构实例的预定义签名,但由于每个函数返回不同类型的结构,函数签名将interface{}作为返回类型。当我发送json.Unmarshal一个具体结构时,它按我预期的方式工作,但是当我发送与interface{}相同的结构时,它会将其转换为一个映射。这是描述问题的简化示例代码:packagemainimport("encoding/json""fmt")typeFoostruct{Barstring`json:"bar"`}funcgetFoo()interface{}{returnFoo{"bar

json - 如何告诉 json.Unmarshal 使用结构而不是接口(interface)

我想编写一个函数来接收几种类型的结构并从JSON中解码它们。为此,我有另一组函数具有返回结构实例的预定义签名,但由于每个函数返回不同类型的结构,函数签名将interface{}作为返回类型。当我发送json.Unmarshal一个具体结构时,它按我预期的方式工作,但是当我发送与interface{}相同的结构时,它会将其转换为一个映射。这是描述问题的简化示例代码:packagemainimport("encoding/json""fmt")typeFoostruct{Barstring`json:"bar"`}funcgetFoo()interface{}{returnFoo{"bar

json - 为什么 json.Unmarshal 返回一个映射而不是预期的结构?

查看这个Playground:http://play.golang.org/p/dWku6SPqj5基本上,我正在处理的库接收一个接口(interface){}作为参数,然后需要从字节数组中json.Unmarshal。在幕后,interface{}参数是一个与字节数组的json结构相匹配的结构,但库没有对该结构的引用(但它确实有对相应的引用reflect.Typethrough).为什么json包检测不到底层类型?出于某种原因,它返回一个简单的映射而不是实际的结构。代码如下:packagemainimport"fmt"import"encoding/json"import"refle

json - 为什么 json.Unmarshal 返回一个映射而不是预期的结构?

查看这个Playground:http://play.golang.org/p/dWku6SPqj5基本上,我正在处理的库接收一个接口(interface){}作为参数,然后需要从字节数组中json.Unmarshal。在幕后,interface{}参数是一个与字节数组的json结构相匹配的结构,但库没有对该结构的引用(但它确实有对相应的引用reflect.Typethrough).为什么json包检测不到底层类型?出于某种原因,它返回一个简单的映射而不是实际的结构。代码如下:packagemainimport"fmt"import"encoding/json"import"refle

json - Go JSON命名策略

我是Go的新手,我正在探索将go用于我的一项微服务。我想知道Go将对象转换为Json并返回Json的方式。但不幸的是,我发现使用标签名称配置输出字段名称并不困难。typeMyStructstrust{MyNamestring}将转换为json{"MyName":"somestring"}但是我们正在遵循整个组织的整个api遵循snake_case的命名策略{"my_name":"somestring"}在我的组织中被认为是有效的。我开始在每个字段级别使用json:"my_name,omitempty"等标签。我想知道有没有一种方法可以在全局项目级别配置它,这样我就不想在每个对象及其字段

json - Go JSON命名策略

我是Go的新手,我正在探索将go用于我的一项微服务。我想知道Go将对象转换为Json并返回Json的方式。但不幸的是,我发现使用标签名称配置输出字段名称并不困难。typeMyStructstrust{MyNamestring}将转换为json{"MyName":"somestring"}但是我们正在遵循整个组织的整个api遵循snake_case的命名策略{"my_name":"somestring"}在我的组织中被认为是有效的。我开始在每个字段级别使用json:"my_name,omitempty"等标签。我想知道有没有一种方法可以在全局项目级别配置它,这样我就不想在每个对象及其字段

json - 字符串编码数字的自定义 JSON 解码

我有一个struct,其中包含各种货币值,以美分(1/100USD)为单位:typeCurrencyValuesstruct{v1int`json:"v1,string"`v2int`json:"v2,string"`}我想为带有千位分隔符的货币值创建自定义jsonUnmarshaller。这些值被编码为字符串,带有一个或多个千位分隔符(,),可能还有一个小数点(.)。对于这个JSON{"v1":"10","v2":"1,503.21"},我想对CurrencyValues{v1:1000,v2:150321}.这里有一个类似的答案:Golang:Howtounmarshallboth

json - 字符串编码数字的自定义 JSON 解码

我有一个struct,其中包含各种货币值,以美分(1/100USD)为单位:typeCurrencyValuesstruct{v1int`json:"v1,string"`v2int`json:"v2,string"`}我想为带有千位分隔符的货币值创建自定义jsonUnmarshaller。这些值被编码为字符串,带有一个或多个千位分隔符(,),可能还有一个小数点(.)。对于这个JSON{"v1":"10","v2":"1,503.21"},我想对CurrencyValues{v1:1000,v2:150321}.这里有一个类似的答案:Golang:Howtounmarshallboth

json - Golang interface{} 类型误解

当使用interface{}作为函数参数类型,给定非指针类型,并使用json.Unmarshal时,我在Go中遇到了一个错误。因为一段代码抵得上千字,这里有一个例子:packagemainimport("encoding/json""fmt")functest(iinterface{}){j:=[]byte(`{"foo":"bar"}`)fmt.Printf("%T\n",i)fmt.Printf("%T\n",&i)json.Unmarshal(j,&i)fmt.Printf("%T\n",i)}typeTeststruct{Foostring}funcmain(){test(Te

json - Golang interface{} 类型误解

当使用interface{}作为函数参数类型,给定非指针类型,并使用json.Unmarshal时,我在Go中遇到了一个错误。因为一段代码抵得上千字,这里有一个例子:packagemainimport("encoding/json""fmt")functest(iinterface{}){j:=[]byte(`{"foo":"bar"}`)fmt.Printf("%T\n",i)fmt.Printf("%T\n",&i)json.Unmarshal(j,&i)fmt.Printf("%T\n",i)}typeTeststruct{Foostring}funcmain(){test(Te