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 @ 2016-09-01 23:13  Ender.Lu  阅读(6518)  评论(0编辑  收藏  举报