如何将变量值连接到字节键值?
type Result struct {
SummaryID int `json:"summaryid"`
Description string `json:"description"`
}
byt := []byte(`
{
"fields": {
"project":
{
"key": "DC"
},
"summary": "Test" + Result.SummaryID,
"description": Result.Description,
"issuetype": {
"name": "Bug"
}
}
}`)
注意:Result.SummaryID
和Result.Description
的值从db.Query()
和rows.Scan()
返回。
答案 0 :(得分:1)
Go不支持字符串插值,因此如果您想用较小的子字符串组合字符串,则必须使用fmt.Sprintf
或template
包之类的内容。
你可以像这样做前者:
var buf bytes.Buffer
byt := []byte(fmt.Sprintf(`
{
"fields": {
"project":
{
"key": "DC"
},
"summary": "Test%d",
"description": "%s",
"issuetype": {
"name": "Bug"
}
}
}`, result.SummaryID, result.Description))
虽然我真的会建议不要这样做,因为encoding/json
包是为安全而合理地输出JSON字符串而设计的。
Here's an example使用struct embedding作为主对象,并映射到其他地方以演示这两种方法。
type WrappedResult struct {
Project map[string]string `json:"project"`
Result
IssueType map[string]string `json:"issuetype"`
}
byt, err := json.MarshalIndent(map[string]interface{}{
"fields": WrappedResult{
Result: result,
Project: map[string]string{ "key": "DC" },
IssueType: map[string]string{ "name": "Bug" },
},
});
(请注意,您的类型声明与您的JSON示例相矛盾,因为前者指定summaryid
,但后者具有summary
)