相关疑难解决方法(0)

我如何解组JSON?

我还在学习Go.我试图将json解组成一个struct.但是,struct有一个带标记的字段.使用反射,我试着看看标签中是否有字符串"json".如果确实如此,那么json to unmarshal应该简单地作为字符串解组到字段中.

例:

const data = `{"I":3, "S":{"phone": {"sales": "2223334444"}}}`
type A struct {
    I int64
    S string `sql:"type:json"`
}
Run Code Online (Sandbox Code Playgroud)

问题很简单 - 将json中的"S"解组为结构A中的字符串.

这就是我走了多远.但我被困在这里.

http://play.golang.org/p/YzrhjuXxGN

json go

6
推荐指数
1
解决办法
1万
查看次数

gob解码结构中的接口与原始接口之间的区别

当该类型嵌入到结构中时,我一直在努力理解编码/解码接口类型与完全没有嵌入时的区别.

使用以下示例:在操场上

注意代码声明了一个接口IFace.它声明了一个非导出的结构impl.它设置了一些采空区的方法Register,GobEncode以及GobDecodeimpl结构.

然后,它还声明了一个Data导出的结构,并且具有一个Foo接口类型的单个字段IFace.

所以,有一个接口,一个实现它的结构,以及一个容器结构,它有一个字段,其值是接口类型.

我的问题是容器结构Data很愉快地通过Gob gauntlet发送,当它通过时,它很高兴地对Data结构中的IFace字段进行编码和解码......太棒了!但是,我似乎无法通过gob gaunt只发送一个IFace值的实例.

我错过了什么神奇的召唤?

搜索错误消息会给出一些结果,但我相信我已经满足了Gob合同......而且"证明"就是成功的结构化.显然我错过了一些东西,却看不到它.

注意,程序的输出是:

Encoding {IFace:bilbo} now
Encoding IFace:baggins now
Decoded {IFace:bilbo} now
decode error: gob: local interface type *main.IFace can only be decoded from remote interface type; received concrete type impl
Decoded <nil> now
Run Code Online (Sandbox Code Playgroud)

实际代码是:

package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
)

type IFace interface {
    FooBar() string …
Run Code Online (Sandbox Code Playgroud)

go gob

5
推荐指数
1
解决办法
2200
查看次数

嵌入结构的多态 JSON 解组

这是一个示例(另请参见https://play.golang.org/p/or7z4Xc8tN):

package main

import (
    "encoding/json"
    "fmt"
)

type A struct {
    X string
    Y int
}

type B struct {
    A
    Y string 
}

func main() {
    data := []byte(`{"X": "me", "Y": "hi"}`)
    b := &B{}
    json.Unmarshal(data, b)
    fmt.Println(b)
    fmt.Println(b.A)

    b = &B{}
    data = []byte(`{"X": "me", "Y": 123}`)
    json.Unmarshal(data, b)
    fmt.Println(b)
    fmt.Println(b.A)
}
Run Code Online (Sandbox Code Playgroud)

哪些输出:

&{{me 0} hi}
{me 0}
&{{me 0} }
{me 0}
Run Code Online (Sandbox Code Playgroud)

有没有办法多态地将字段 Y 解组为 int 或 string?或者甚至因为 BY 被定义而完全解组为 AY ?

我知道有些人可能会建议使用诸如 之类的东西进行解组 …

polymorphism json nested go unmarshalling

2
推荐指数
1
解决办法
2804
查看次数

标签 统计

go ×3

json ×2

gob ×1

nested ×1

polymorphism ×1

unmarshalling ×1