我有一个包含字段 JSONB 的简单表:
CREATE TABLE IF NOT EXISTS "test_table" (
"id" text NOT NULL,
"user_id" text NOT NULL,
"content" jsonb NOT NULL,
"create_time" timestamptz NOT NULL,
"update_time" timestamptz NOT NULL,
PRIMARY KEY ("id")
);
我使用一个简单的查询来生成带有 SQLC 的样板文件。
-- name: GetTestData :one
SELECT * FROM test_table
WHERE id = $1 LIMIT 1;
但是该content属性生成为json.RawMessage.
type TestTable struct {
ID string `json:"id"`
UserId string `json:"user_id"`
Content json.RawMessage `json:"content"`
CreateTime time.Time `json:"create_time"`
UpdateTime time.Time `json:"update_time"`
}
下面是存储在内容列中的 JSON 示例:
{
"static": {
"product": [
{
"id": "string",
"elements": {
"texts": [
{
"id": "string",
"value": "string"
}
],
"colors": [
{
"id": "string",
"value": "string"
}
],
"images": [
{
"id": "string",
"values": [
{
"id": "string",
"value": "string"
}
]
}
]
}
}
]
},
"dynamic": {
"banner": [
{
"id": "string",
"elements": {
"texts": [
{
"id": "string",
"value": "string"
}
],
"colors": [
{
"id": "string",
"value": "string"
}
],
"images": [
{
"id": "string",
"values": [
{
"id": "string",
"value": "string"
}
]
}
]
}
}
]
}
}
Static 或 Dynamic 中的嵌套属性是数组。
content 属性应该包含一个嵌套对象,我似乎无法提取其中的数据。json.Unrmarshall()似乎只获得顶级属性。有没有办法转换 map[string]interface{}为内容或帮助 SQLC 生成属性作为接口而不是 RawMessage?
慕斯王
相关分类