json.Marshal()json.MarshalIndent()[]bytejson.MarshalIndent()

MarshalIndent类似于Marshal,但适用缩进格式化输出。

参见这个简单的例子:

type Entry struct { 
    Key string `json:"key"` 
} 

e := Entry{Key: "value"} 
res, err := json.Marshal(e) 
fmt.Println(string(res), err) 

res, err = json.MarshalIndent(e, "", " ") 
fmt.Println(string(res), err) 

输出(尝试在Go Playground):

{"key":"value"} <nil> 
{ 
    "key": "value" 
} <nil> 
type Entry struct { 
    Key string `json:"key"` 
} 
e := Entry{Key: "value"} 

enc := json.NewEncoder(os.Stdout) 
if err := enc.Encode(e); err != nil { 
    panic(err) 
} 

enc.SetIndent("", " ") 
if err := enc.Encode(e); err != nil { 
    panic(err) 
} 

输出(在上试试这个):

{"key":"value"} 
{ 
    "key": "value" 
}