json - Go Gin 将 json 响应转换为 base64
问题描述
我正在尝试将数据库查询数据作为 json 响应发送。这是我的控制器:
import (
"fmt"
"github.com/json-iterator/go"
"log"
)
func GetNewsPapers() []byte{
db := GetDB()
var json = jsoniter.ConfigCompatibleWithStandardLibrary
rows, err := db.Queryx(`SELECT title, language, ranking, slug, search_term, logo_url FROM public.news_newspaper`)
if err != nil {
log.Println(err)
}
defer rows.Close()
tableData := make([]map[string]interface{}, 0)
for rows.Next() {
entry := make(map[string]interface{})
err := rows.MapScan(entry)
if err != nil {
log.Println(err)
}
tableData = append(tableData, entry)
}
jsonData, _ := json.Marshal(tableData)
fmt.Println(string(jsonData)) // printing expected json
err = rows.Err()
if err != nil {
panic(err)
}
return jsonData
}
和
func (n *NewsPaperController) GetList(c *gin.Context) {
value := database.GetNewsPapers()
c.JSON(http.StatusOK, value)
}
问题是我得到 base64 字符串作为响应,而不是我期望的 json 对象。如果我转换value
为如下所示的字符串,我会得到人类可读的值。
c.JSON(http.StatusOK, string(value))
但是整个响应以这样的字符串编码:
"[{\"language\":\"en\",\"logo_url\":\"..\",\"ranking\":2,\"search_term\":\"..\",\"slug\":\"..\",\"title\":\"....\"}]
如何获得如下的 json 响应:
[{"language":"en","logo_url":"..","ranking":2,"search_term":"..","slug":"..","title":".."} ]
解决方案
func (c *Context) JSON(code int, obj interface{})
JSON 将给定的结构作为 JSON 序列化到响应正文中。它还将 Content-Type 设置为“application/json”。
c.JSON()
序列化为 JSON,您无需在使用前解组。用于tableData
_c.JSON()
func GetNewsPapers() []map[string]interface{}{
// your existing code
return tableData
}
func (n *NewsPaperController) GetList(c *gin.Context) {
value := database.GetNewsPapers()
c.JSON(http.StatusOK, value)
}
并且使用%#v
你可以看到值的 Go-syntax 表示,你也会在其中找到转义字符
fmt.Printf("%#v", string(jsonData))
推荐阅读
- sql - Oracle UNION 取决于 IF 条件
- pdf - 如何将矩形区域从多页 PDF 的一页转换为 PNG?裁剪/裁剪问题
- powershell - 包含运算符的 Powershell 脚本不起作用
- liferay - 编辑模式下的多个动作 Liferay MVC
- snowflake-cloud-data-platform - 如何避免雪花复制语句中的子文件夹
- elixir - 如何清除 Phoenix LiveView 表单中的文本区域?
- python - 如何在同一选项卡中使用硒功能?(在蟒蛇上)
- reactjs - React,使用 AppSync(无服务器应用程序)存储的数据过多
- ruby-on-rails - 获取磁盘存储和 S3 存储上 ActiveStorage 文件的路径
- java - 如何处理 UsernameNotFoundException 春季安全