如何用Go语言修正Notion API请求的JSON格式错误?
修正Notion API请求中Checkbox字段的Go数据结构
你当前的JSON请求错误核心是Checkbox字段的层级结构不匹配Notion API要求:Notion规定复选框字段的值必须是包含checkbox键的嵌套对象,而非直接将字段名与布尔值绑定。
错误根源
你的Go代码里大概率是把Checkbox相关字段定义成了map[string]bool或直接绑定布尔值的结构,导致序列化后输出"Done?":true,而非Notion要求的嵌套格式。
修正方案
方法1:嵌套结构体(推荐,类型安全)
定义专门的复选框结构体,在父结构中引用它来匹配API格式:
// 定义复选框字段的结构 type CheckboxField struct { Checkbox bool `json:"checkbox"` } // 页面属性结构体中,将"Done?"字段改为CheckboxField类型 type PageProperties struct { // 保留其他原有字段... Done CheckboxField `json:"Done?"` }
方法2:嵌套Map(灵活但无类型校验)
如果属性字段不固定,可使用嵌套Map构建结构:
// 直接用map构建符合要求的属性结构 properties := map[string]interface{}{ // 其他字段... "Done?": map[string]bool{"checkbox": true}, }
调整后序列化结果
修正后的结构序列化后会生成Notion API接受的正确格式:
{ "Done?": { "checkbox": true } }
关键注意点
- 确保JSON标签的键名与Notion数据库中的字段名完全一致(比如你的字段是
Done?,标签需写json:"Done?") - 若页面属性包含多种类型字段(文本、数字等),每种字段都需按照Notion要求的嵌套结构定义,统一用
map[string]interface{}构建属性会更灵活
内容的提问来源于stack exchange,提问作者0xnina
相关产品推荐
相关产品推荐

