json.MarshalIndent和json.MarshalI的不同
时间: 2024-03-30 16:30:17 浏览: 14
json.MarshalIndent和json.Marshal的不同在于输出的格式。
json.MarshalIndent函数会将JSON数据进行格式化,使其更易读。它会在生成的JSON字符串中添加缩进和换行符,以便于阅读和调试。可以通过设置前缀和缩进字符串来自定义缩进格式。
json.Marshal函数则不会对生成的JSON数据进行格式化,它会将JSON数据以紧凑的形式输出,没有额外的缩进和换行符。
下面是两个函数的示例代码:
1. 使用json.MarshalIndent函数生成格式化的JSON数据:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{
Name: "Alice",
Age: 25,
}
jsonData, err := json.MarshalIndent(person, "", " ")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonData))
}
```
输出结果:
```json
{
"name": "Alice",
"age": 25
}
```
2. 使用json.Marshal函数生成紧凑的JSON数据:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{
Name: "Alice", Age: 25,
}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonData))
}
```
输出结果:
```json
{"name":"Alice","age":25}
```