我正在尝试将 JSON 字节存储到后greSQL,但有一个问题。
\u0000 无法转换为文本。
正如您在下面看到的,JSON包含诸如 之类的转义序列,似乎PostgreSQL将其解释为unicode字符,而不是JSON字符串。\u0000
err := raws.SaveRawData(data, url)
// if there is "\u0000" in the bytes
if err.Error() == "ERROR: unsupported Unicode escape sequence (SQLSTATE 22P05)" {
// try to remove \u0000, but not work
data = bytes.Trim(data, "\u0000")
e := raws.SaveRawData(data, url) // save data again
if e != nil {
return e // return the same error
}
return nil
}
保存的结构是:
type RawJSONData struct {
ID uint64 `gorm:"primarykey" json:"id"`
CreatedAt time.Time `json:"-"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
Data datatypes.JSON `json:"data"`
URL string `gorm:"index" json:"url"`
}
datatypes.JSON来自 gorm.io/datatypes。它似乎只是,它是(延伸自?)一个。json.RawMessage[]byte
我使用后greSQL的类型来存储这些数据。JSONB
桌子:
create table raw_json_data
(
id bigserial not null constraint raw_json_data_pke primary key,
created_at timestamp with time zone,
deleted_at timestamp with time zone,
data jsonb,
url text
);
慕沐林林
相关分类