golang获取数据表转换为json通用方法

复制代码
package main

import (
    "database/sql"
    "fmt"
    "log"
    "net/http"
    "time"

    _ "github.com/go-sql-driver/mysql"
)
import "strings"

func main() {
    http.HandleFunc("/getuser", getuser)
    s := &http.Server{
        Addr:           ":7080",
        ReadTimeout:    30 * time.Second,
        WriteTimeout:   30 * time.Second,
        MaxHeaderBytes: 1 << 20,
    }
    log.Fatal(s.ListenAndServe())
}

func getuser(w http.ResponseWriter, r *http.Request) {

    w.Write([]byte(getuser_json()))
}

func getuser_json() string {
    db, err := sql.Open("mysql", "root:root@tcp(localhost:3306)/jeecg?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    rows, err := db.Query("select * from t_s_user")
    if err != nil {
        panic(err.Error())
    }

    columns, err := rows.Columns()
    if err != nil {
        panic(err.Error())
    }

    values := make([]sql.RawBytes, len(columns))

    scanArgs := make([]interface{}, len(values))
for i := range values {
        scanArgs[i] = &values[i]
    }

    list := "["

    for rows.Next() {
        err = rows.Scan(scanArgs...)
        if err != nil {
            fmt.Println("log:", err)
            panic(err.Error())
        }

        row := "{"
        var value string
        for i, col := range values {
            if col == nil {
                value = "NULL"
            } else {
                value = string(col)
            }

            columName := strings.ToLower(columns[i])

            cell := fmt.Sprintf(`"%v":"%v"`, columName, value)
            row = row + cell + ","
        }
        row = row[0 : len(row)-1]
        row += "}"
        list = list + row + ","

    }
    list = list[0 : len(list)-1]
    list += "]"
    fmt.Println(list)
    return list
}
复制代码

 

调用url : http://localhost:7080/getuser

posted @   Ender.Lu  阅读(6522)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示