我正在尝试将 json 类型的 postgres 列转换为 golang json 对象。
type MY_JSON struct {
MY_ID string `json:"my_id"`
MY_INFO []MY_INNER_JSON `json:"my_info"`
}
type MY_INNER_JSON struct {
SOME_ID string `json:"some_id"`
SOME_NUM int64 `json:"some_num"`
SOME_OPTIONAL string `json:"some_optional,omitempty"`
}
rows, err := db.Query("SELECT my_json FROM my_json_table LIMIT 1;")
for rows.Next() {
var mycolumn MY_JSON
err = rows.Scan(&mycolumn)
fmt.Println(mycolumn)
}
这是json的样子
{
"my_id": "this is my_id",
"my_info": [
{
"some_id": "some_id",
"some_num": 123
},
{
"some_id": "some_id",
"some_num": 123,
"some_optional": "sometimes more"
},
]
}
我在运行时对 golang 感到 panic 。
谁能给我指明方向并告诉我哪里做错了?
最佳答案
通过实现 sql.Scanner
MY_JSON
上的接口(interface),您的代码应该按原样工作。为此,您只需在 MY_JSON
类型(带有指针接收器)上添加 Scan
方法。
func (m *MY_JSON) Scan(src interface{}) error {
bs, ok := src.([]byte)
if !ok {
return errors.New("not a []byte")
}
return json.Unmarshal(bs, m)
}
关于json - 如何将 postgresql json 类型转换为 golang native?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161698/