package main
import (
"fmt"
"encoding/json"
)
type Ticket struct {
From string
To string
}
func (t Ticket) String() string {
return fmt.Sprintf("%s - %s", t.From, t.To)
}
type Passenger struct {
Name string `json:"Name"`
Tkt Ticket `json:"Ticket"`
}
func main() {
p := Passenger{}
p.Name = "John"
p.Tkt.From = "New York"
p.Tkt.To = "Washington"
buf, _ := json.Marshal(p)
fmt.Println(string(buf))
}
このコード出力:JSON文字列にString()メソッドを使用して埋め込み構造体を正しくシリアル化するにはどうすればいいですか?
{"Name":"John","Ticket":{"From":"New York","To":"Washington"}}
しかし、それをこのような出力作る方法を、(それは複雑な構造体のための簡単かつフレンドリーだ)json.Marshal()
メソッドを使用して:JSONを生成するには
{"Name":"John","Ticket":"New York - Washington"}
すばらしい解決策です。ありがとうございました。 –
ちなみに、 '%s'の代わりに'%q'を使うだけで、あなたのために文字列を引用します。 https://play.golang.org/p/RYhaMM5kpd – Kaedys
@Kaedysあなたは私がインプットの潜在的な引用を忘れていることを実感しました。私は 'json'パッケージ自体の使用を示唆するために質問を更新しました。 – icza