golang 读取SQL数据库数组json值和存储数组json内容至SQL字段
golang 读取SQL数据库json值和存储json内容至SQL字段
存储:
strJson, _ := json.Marshal(jsText) //结构体内容 转json文本
sql := `UPDATE "book" SET "strJson"='` + string(strJson) + `' WHERE "id"='0' ` //sql语句
err := PgDB.QueryRow(sql) //执行存储读取:
type Explain struct {
Parts string `json:"parts"`
Title string `json:"title"`
ArrLabel string `json:"arrLabel" `
Text string `json:"text" `
ArrContent string `json:"arrContent" `
}
var strbyte []byte //接收json 字段内容
sql := `SELECT "name" FROM "book"."name" WHERE "id"='0' `
err := PgDB.QueryRow(sql).Scan(&strbyte)
if err != nil {
log.Println("SQL异常:", err)
}
var jsons Explain //结构体
json.Unmarshal([]byte(strbyte), &jsons) //转序列号
fmt.Println(jsons) //打印结果
各类型存储:
var text string
var ints int
var int64s int64
var floats float64
var arrstr []string //文本数组
var arrint [][]int //整形数组
var objarr []struct { //对象数组
a2 string
b2 []string
}
var obj struct { //对象 注意SQL数据库中不能数组模式 只能json模式
a1 string
b1 []string
}
objjson, _ := json.Marshal(obj) //结构体内容 转json文本,
/* SQL语句 */
sql := `INSERT INTO "book"("text","ints","int64s","float64","floats","arrstr","arrint","obj","objarr")`
sql += `VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9) RETURNING "id"` //$符合作为转换标识
DB.QueryRow(sql, text, ints, int64s, floats,
pq.Array(arrstr), pq.Array(arrint), pq.Array(objarr), string(objjson),
).Scan(&sql) // 查询单个数据/插入单个数据必须加Scan 接收返回id
//需要运行终端载入 go get github.com/lib/pq