繁体   English   中英

Unmarshall JSON参考类型

[英]Unmarshall json reference types

我正在尝试编写一个工作示例来测试此链接的 “引用类型”部分。

但是我不知道这应该如何工作。 下面提供了我尝试编写而没有成功的示例,仅供参考:

package main

import (
    "fmt"
    "log"
    "encoding/json"
)

type Foo1 struct {
    Val     int
}

type Foo2 struct {
    Name    string
}

type IncomingMsg struct {
    F1 *Foo1
    F2 *Foo2
}

func main() {
    b := []byte(`{"F1" : {"Val":13}}`)
//  b := []byte(`{"F2" : {"Name":"Hello"}}`)

    var msg IncomingMsg

    err := json.Unmarshal(b, &msg)
    if err != nil {
        log.Fatal(err)
    }

    if msg.F1 != nil {
        fmt.Println(msg.F1.Val)
    }

    if msg.F2 != nil {
        fmt.Println(msg.F2.Name)
    }
}

你们中有更多使用Go经验的人可以解决此问题吗?

编辑:提供的测试已更新,现在可以按预期工作。 谢谢亚当先生提供的答案,这对我理解这个问题大有帮助! :)

您在示例中发布的json看起来好像体内缺少F1吗?

https://play.golang.org/p/Fl-lhH2y3X

b := []byte(`{"F1":{"Val":13}}`)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM