You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向Notion API发送含反斜杠的JSON数据时POST请求报错

解决Notion API属性ID含反斜杠的POST请求验证错误

问题根源

你看到的属性ID "Z\\=g" 是JSON转义后的格式,真实属性ID其实是 Z\=g(JSON里的双反斜杠仅代表单个反斜杠)。之前的错误是因为手动处理JSON时,反斜杠被多次转义,导致API收到的ID变成了 Z\\\\=g,它把这个当成了不存在的属性名,因此抛出验证错误。

正确解决方案

1. 直接提取属性ID

从Notion API查询返回的结果中直接提取属性ID即可,无需手动修改转义符:

# 假设这是查询数据库得到的现有条目属性结构
existing_entry = {
    "properties": {
        "Worktype": { 
            "id": "Z\\=g", 
            "type": "select", 
            "select": { "id": "_WG~", "name": "Firmware", "color": "orange" } 
        }
    }
}

# 直接提取ID,Python会自动处理转义,得到真实的"Z\=g"
worktype_prop_id = existing_entry["properties"]["Worktype"]["id"]

2. 用Python字典构造请求体,避免手动拼接JSON

永远不要手动编写JSON字符串,用Python字典定义请求参数,再通过json.dumps()自动处理转义逻辑:

import requests
import json

# 配置你的Notion信息
NOTION_TOKEN = "your_token_here"
DB_ID = "your_database_id_here"

headers = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28"  # 建议使用最新稳定版API
}

# 构造新页面的属性字典,用提取到的属性ID作为键
new_page_props = {
    worktype_prop_id: {
        "type": "select",
        "select": {
            "name": "Firmware"  # 替换为你要设置的选项名称
        }
    },
    # 可添加其他属性,比如标题
    "title": {
        "type": "title",
        "title": [{"text": {"content": "新固件任务"}}]
    }
}

# 构造完整请求体
payload = {
    "parent": {"database_id": DB_ID},
    "properties": new_page_props
}

# 发送请求,用json.dumps自动处理转义
response = requests.post(
    "https://api.notion.com/v1/pages",
    headers=headers,
    data=json.dumps(payload)
)

# 检查响应结果
if response.status_code == 200:
    print("条目添加成功")
else:
    print(f"错误详情: {response.json()}")

关键注意事项

  • 禁止手动拼接JSON:手动处理转义极易出错,json.dumps()会自动处理所有特殊字符的转义,确保API收到正确格式的参数。
  • 不要修改提取到的属性ID:从API返回的ID已经是正确转义后的字符串,直接使用即可,无需额外替换反斜杠。
  • 确认API版本:使用Notion官方推荐的最新稳定版API,避免旧版本的兼容性问题。

内容的提问来源于stack exchange,提问作者Miguel Tavares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:55:19