我需要从mongo数据库中获取一个项目,所以我定义了一个这样的结构
type Page struct {
PageId string `bson:"pageId"`
Meta map[string]interface{} `bson:"meta"`
}
现在我还需要将它编码为JSON,但它将字段编码为大写(我得到PageId而不是pageId)所以我还需要为JSON定义字段标签。我试过这样的东西,但它不起作用:
type Page struct {
PageId string `bson:"pageId",json:"pageId"`
Meta map[string]interface{} `bson:"meta",json:"pageId"`
}
那么如何做到这一点,在结构中定义多个名称标签?
答案 0 :(得分:185)
它在reflect
包的文档中说:
按照惯例,标记字符串是可选的空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由空格(U + 0020''),引号(U + 0022'“')和冒号(U + 003A':')以外的非控制字符组成。每个值都被引用使用U + 0022'“'字符和Go字符串文字语法。
您需要做的是使用空格而不是逗号作为标记字符串分隔符。
type Page struct {
PageId string `bson:"pageId" json:"pageId"`
Meta map[string]interface{} `bson:"meta" json:"meta"`
}
答案 1 :(得分:55)
感谢您接受的答案。
以下仅适合像我这样的懒人。
<强>不正确强>
List<string[]>
<强> CORRECT 强>
CREATE TYPE id_list AS TABLE (
id int NOT NULL PRIMARY KEY
);
GO
CREATE PROCEDURE [dbo].[tvp_test] (
@param1 INT
, @customer_list id_list READONLY
)
AS
BEGIN
SELECT @param1 AS param1;
-- join, filter, do whatever you want with this table
-- (other than modify it)
SELECT *
FROM @customer_list;
END;
GO
DECLARE @customer_list id_list;
INSERT INTO @customer_list (
id
)
VALUES (1), (2), (3), (4), (5), (6), (7);
EXECUTE [dbo].[tvp_test]
@param1 = 5
, @customer_list = @customer_list
;
GO
DROP PROCEDURE dbo.tvp_test;
DROP TYPE id_list;
GO