我正在尝试更新特定行的 Jsonb 列值。我运行了查询
UPDATE instruction.file SET "details" = (jsonb_set("details",'{"UploadBy"}','"test@test.com"'::jsonb, true)) WHERE id=820;
Run Code Online (Sandbox Code Playgroud)
这在 pgAdmin3 中工作正常。
当我试图在我的 Go 代码中做同样的事情时。我收到错误:“pq:json 类型的输入语法无效”
我的代码:
func main() {
uname := "test@test.com"
err := Init() //Db init
if err != nil {
fmt.Println("Error", err)
return
}
result, err1 := Db.Exec("UPDATE instruction.file SET \"details\" = (jsonb_set(\"details\",'{\"UploadBy\"}',$1::jsonb, true)) WHERE id=$2", uname, "820")
if err1 != nil {
fmt.Println("Error", err1)
return
}
n, err1 := result.RowsAffected()
if err1 != nil {
fmt.Println("Error", err1)
return
}
if n != 1 …Run Code Online (Sandbox Code Playgroud) Go类型转换在内部如何工作?
类型转换的内存利用率是多少?例如:
var str1 string
str1 = "26MB string data"
byt := []byte(str1)
str2 := string(byt)
Run Code Online (Sandbox Code Playgroud)
每当我键入转换任何变量时,它将消耗更多的内存吗?
我对此很担心,因为当我尝试解组时,会出现“ 致命错误:运行时:内存不足 ”
err = json.Unmarshal([]byte(str1), &obj)
Run Code Online (Sandbox Code Playgroud)
str1值来自HTTP响应,但使用ioutils.ReadAll读取,因此它包含完整的响应。
我需要解码其中包含"\n"的JSON字符串:
[
{"Name":"Neo", "Message":"Hi\n:Hello everyone"},
{"Name":"Sam","Messsage":"Hello\nEveery\nOne"}
]
Run Code Online (Sandbox Code Playgroud)
我使用下面的Golang代码:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Messages []string `json:"Name,omitempty"`
}
func main() {
s := "[{\"Name\":\"Neo\", \"Message\":\"Hi\n:Hello everyone\"}, {\"Name\":\"Sam\",\"Messsage\":\"Hello\nEveery\nOne\"}]"
var pro Person
err := json.Unmarshal([]byte(s), &pro)
if err == nil {
fmt.Printf("%+v\n", pro)
} else {
fmt.Println(err)
fmt.Printf("%+v\n", err)
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
ERROR invalid character '\n' in string literal
Run Code Online (Sandbox Code Playgroud)