-1
しかし、私はこれがどのように動作するかを理解することができませんでしだ。私は成功せず、書き込みしようとしている例は、単に参考のために、以下に提供されています
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)
}
}
は行くとより多くの経験を持つあなたのいくつかは、この問題を助けることはできますか?
EDIT:提供されたテストが更新された、期待通りに今取り組んでいます。答えを教えてくれてありがとう、Adamさん、ありがとうございました。それは身体にF1
が不足しているようにあなたがあなたの例に掲載している:)
、どうもありがとうございました、ミスターアダム! :)次に、ドキュメンテーションで参照されるこの便利なパターンを使用するために、デコードされるJSONにフィールド名を含める必要があると思われますか?私はより一般的な方法でそれを行うことができますが。 – aicastell
@aicastell、これはすべてのJSONデシリアライザが機能する方法です。具体的な型マッピングへの標準JSONです。 –
これらのすべてがこの推奨パターンを使用しているわけではありません。私はC開発に精通しており、cJSON、ジャスミンおよび他のCベースのデシリアライザを使用した後、 – aicastell