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