react go json.Marshal 的使用
我在go有这样的update代码:
type UpdateCalculationTemplateRequest struct {
Name string `json:"name"`
FoamParamsData [][]string `json:"foamParamsData"`
RefrigerationParamsData [][]string `json:"refrigerationParamsData"`
}
func UpdateCalculationTemplate(c *gin.Context) {
id, _ := strconv.Atoi(c.Param("id"))
var req UpdateCalculationTemplateRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
fmt.Println(" == got error", err.Error())
return
}
fmt.Println("======= UpdateCalculationTemplate, req ", req)
data := make(map[string]interface{})
if req.Name != "" {
data["name"] = req.Name
}
if len(req.FoamParamsData) != 0 {
foamParamsData := req.FoamParamsData
data["foam_params_data"] = foamParamsData
}
if len(req.RefrigerationParamsData) != 0 {
refrigerationParamsData := req.RefrigerationParamsData
data["refrigeration_params_data"] = refrigerationParamsData
}
fmt.Println("== id: ", id)
models.UpdateCalculationTemplate(id, data)
c.JSON(http.StatusOK, gin.H{
"message": "ok",
})
}在前端已经可以看到发送了请求,数据格式也是正确的,在go也可以打印出数据,但是不能udpate:
== data: map[foam_params_data:[[第n年 生产排放因子(factor_production) 年度排放因子(factor_by_year) 退役排放因子(factor_tui_yi)] [1 0.02 0.01 0.01] [2 0.02 0.01 0.01] [3 0.02 0.01 0.01] [4 0.02 0.01 0.01] [5 0.02 0.01 0.01] [6 0.02 0.01 0.01] [7 0.02 0.01 0.01] [8 0.02 0.01 0.01] [9 0.02 0.01 0.01] [10 0.02 0.01 0.01] [11 0.02 0.01 0.01] [12 0.02 0.01 0.01] [13 0.02 0.01 0.01] [14 0.02 0.01 0.01] [15 0.02 0.01 0.01] [16 0.2 0.2 0.2] [17 0.2 0.2 0.2] [18 0.2 0.2 0.2] [19 0.2 0.2 0.2] [20 0.2 0.2 0.2]]]
(/workspace/dongtaipaifang_2_backend/models/calculation_templates.go:82)
[2023-10-17 14:43:26] [0.49ms] UPDATE "calculation_templates" SET "foam_params_data" = '', "updated_at" = '2023-10-17 14:43:26' WHERE (id = 22)
[1 rows affected or returned ] 可以使用json.Marshal对数据处理:
目的是:
<span style="font-family:sans-serif, Arial, Verdana, Trebuchet MS">把</span>[][]stringtext
(在Go语言中,可以使用
encoding/json
package main
import (
"database/sql"
"encoding/json"
"fmt"
_ "github.com/lib/pq"
)
type Data struct {
RefrigerationParamsData [][]string `json:"refrigeration_params_data"`
FoamParamsData [][]string `json:"foam_params_data"`
}
func main() {
// 示例的二维切片
refrigerationParamsData := [][]string{
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
}
foamParamsData := [][]string{
{"A", "B", "C"},
{"D", "E", "F"},
{"G", "H", "I"},
}
// 创建数据结构
data := Data{
RefrigerationParamsData: refrigerationParamsData,
FoamParamsData: foamParamsData,
}
// 将数据结构转换为JSON字符串
jsonData, err := json.Marshal(data)
if err != nil {
panic(err)
}
jsonStr := string(jsonData)
// 连接到PostgreSQL数据库
db, err := sql.Open("postgres", "host=localhost port=5432 user=your_username dbname=your_dbname password=your_password sslmode=disable")
if err != nil {
panic(err)
}
defer db.Close()
// 执行数据库插入操作
_, err = db.Exec("INSERT INTO your_table_name (refrigeration_params_data, foam_params_data) VALUES ($1, $2)", jsonStr, jsonStr)
if err != nil {
panic(err)
}
fmt.Println("Data inserted successfully!")
}