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
795 Views