3 回答

TA贡献1836条经验 获得超3个赞
两件事情:
“反斜杠”只是转义字符。他们实际上并不在那里。
缩进 JSON 很简单,只需调用适当的 Indent 函数即可:
如果您已经有了 JSON 字符串,请使用包中的json.Indent
函数encoding/json
:
input := []byte("[{\"id\":\"e61b3ff8-6cdf-4b23-97a5-a28107c57543\",\"firstname\":\"John\",\"lastname\":\"Doe\",\"email\":\"john@doe.com\",\"username\":\"johndoe\",\"token\":\"19b33c79-32cc-4063-9381-f2b64161ad8a\",\"lastRequest\":null}]")
buf := &bytes.Buffer{}
if err := json.Indent(buf, input, "", "\t"); err != nil {
panic(err)
}
fmt.Println(buf.String())
游乐场链接
但是,如果您试图直接编组为缩进形式,只需使用MarshalIndent函数 intead of Marshal:
userJson, err := json.MarshalIndent(testUser, "", "\t")

TA贡献1821条经验 获得超6个赞
好吧,这将是我在 stackoverflow 中的第一个答案,希望这会有所帮助。
Go gin 框架带有一些方便的功能,因为我不知道你使用的是什么版本的 golang 和 Gin 框架,你可以试试这个:
var users []User
r.GET("/getusers", func(c *gin.Context) {
usersArr := make([]User, len(users))
for i := 0; i < len(users); i++ {
usersArr[i] = users[i]
}
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
} else {
c.JSON(200, users)
// If Indentation is required you could try:
c.IndentedJSON(200, users)
}
})
type User struct {
Id string `json:"id"`
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Email string `json:"email"`
Username string `json:"username"`
Token string `json:"token"`
LastRequest []lastRequest `json:"lastRequest"`
}

TA贡献1818条经验 获得超3个赞
希望这个功能有所帮助。
import (
"encoding/json"
"strings"
)
func logRequest(log *logrus.Entry, data []byte) {
cp := bytes.NewBuffer([]byte{})
if err := json.Compact(cp, data); err == nil {
log.Info("Request received: ", string(cp.Bytes()))
} else {
stringifiedData := strings.Replace(string(data[:]), "\n", "", -1)
stringifiedData = strings.Replace(stringifiedData, "\r\n", "", -1)
stringifiedData = strings.Replace(stringifiedData, "\t", "", -1)
log.Info("Request received: ", strings.ReplaceAll(stringifiedData, " ", ""))
}
}
- 3 回答
- 0 关注
- 251 浏览
添加回答
举报