如何在Go语言中将超长payload单行数据拆分为多行或转为可读格式?
Go语言处理长payload的两种技巧:拆多行代码+转可读JSON
一、把代码里的payload字符串拆成多行
Go里有两种简单方式让长字符串在代码里换行,提升可读性:
使用反引号原生字符串字面量
用反引号``包裹整个字符串,里面可直接换行,无需转义双引号或处理特殊字符,适合编写长内容:payload := strings.NewReader(`json=%7B%22rent_content_layout%22%3A%22Original%22%2C %22start_verylargetext_enabled%22%3Afalse%2C %22auto_large_mode%22%3A...`)注意:原生字符串不会解析任何转义字符,原URL编码内容可直接保留换行。
使用字符串拼接符
+拆分
把长字符串分成多个子串,每个子串单独一行,用+连接:payload := strings.NewReader( "json=%7B%22rent_content_layout%22%3A%22Original%22%2C" + "%22start_verylargetext_enabled%22%3Afalse%2C" + "%22auto_large_mode%22%3A...", )这种方式适合需要保留转义字符的场景,代码结构清晰。
二、把payload内容转成人类可读的JSON格式
你的payload里的json参数是URL编码后的JSON字符串,转成可读格式需两步:先解码URL编码,再格式化JSON。
以下是完整示例代码:
package main import ( "encoding/json" "fmt" "net/url" "strings" ) func main() { // 原始payload内容(补全缺失部分) rawPayload := "json=%7B%22rent_content_layout%22%3A%22Original%22%2C%22start_verylargetext_enabled%22%3Afalse%2C%22auto_large_mode%22%3Atrue%7D" // 1. 提取json参数并解码URL编码 jsonEncoded := strings.TrimPrefix(rawPayload, "json=") jsonDecoded, err := url.QueryUnescape(jsonEncoded) if err != nil { fmt.Printf("解码URL编码失败: %v\n", err) return } // 2. 解析并格式化JSON var jsonObj interface{} if err := json.Unmarshal([]byte(jsonDecoded), &jsonObj); err != nil { fmt.Printf("解析JSON失败: %v\n", err) return } jsonFormatted, err := json.MarshalIndent(jsonObj, "", " ") if err != nil { fmt.Printf("格式化JSON失败: %v\n", err) return } fmt.Println("格式化后的可读JSON:") fmt.Println(string(jsonFormatted)) }
运行后输出的可读格式:
{ "rent_content_layout": "Original", "start_verylargetext_enabled": false, "auto_large_mode": true }
内容的提问来源于stack exchange,提问作者Anas S
相关产品推荐
相关产品推荐

