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))
}
此代碼輸出:如何正確使用String()方法將嵌入式結構序列化爲JSON字符串?
{"Name":"John","Ticket":{"From":"New York","To":"Washington"}}
但是,使用json.Marshal()
方法(方法很簡單,友好的複雜結構),如何使它的輸出是這樣的:
{"Name":"John","Ticket":"New York - Washington"}
精彩的解決方案。謝謝。 –
順便提一句,你可以使用'%q'而不是'%s',它會爲你引用字符串。 https://play.golang.org/p/RYhaMM5kpd – Kaedys
@Kaedys你讓我意識到我忘記了輸入中的潛在引用。我更新了這個問題,建議使用'json'包來處理這些問題。 – icza