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

Posted Ender.Lu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:[email protected](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

以上是关于golang获取数据表转换为json通用方法的主要内容,如果未能解决你的问题,请参考以下文章

扁平化深度嵌套的 JSON 以获取 Dataframe 的最快和通用方法是啥?

golang json

从不同核心数据实体获取数据并将结果转换为相应类的通用方法

golang 字符串转map?

从毫秒转换为 Golang 中的时间

golang 获取api 数据