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

Excel Power Query调用API:如何发送列表格式JSON请求体而非字符串?

解决Power Query调用API时请求体格式错误的问题

问题根源

你当前的脚本错误地将JSON结构以字符串形式传入Json.FromValue,导致最终发送给服务器的请求体是一个包含JSON文本的字符串,而非API要求的JSON数组格式。同时,直接移除引号后报错是因为混淆了Power Query语法与JSON语法:Power Query中用{}表示列表,[Key=Value]表示记录,和JSON的[](数组)、{}(对象)语法规则不同。

修正后的脚本

直接在Power Query中构建对应的数据结构(列表+记录),再通过Json.FromValue转换为正确的JSON请求体:

let
    // 构建符合API要求的列表结构:第一个元素是API Key字符串,第二个是记录(对应JSON对象)
    requestData = {
        "APIKEY",
        [
            Location = {"MyCity"}, // Power Query列表对应JSON数组
            Measurements = {2},    // 保持数组格式,匹配API要求
            Start = "-2d"
        ]
    },
    // 将Power Query数据结构转换为JSON二进制内容
    jsonBody = Json.FromValue(requestData),
    apiUrl = "URL.com/query",
    customHeaders = [#"Content-type" = "application/json"],
    source = Web.Contents(apiUrl, [
        Headers = customHeaders,
        Content = jsonBody,
        ManualStatusHandling = {400}
    ]),
    response = if Value.Metadata(source)[Response.Status] = 200 then Json.Document(source) else error Text.FromBinary(source)
in
    response

关键修改说明

  • 用Power Query原生的列表({})和记录([])构建请求数据,完全匹配API要求的JSON数组结构:
    • 外层{}对应JSON的[]数组
    • 内部[Location = {"MyCity"}]对应JSON的{"Location": ["MyCity"]}对象
  • Json.FromValue会自动将Power Query的数据结构转换为符合标准的JSON格式,避免手动拼接字符串导致的格式错误
  • 确保Location和Measurements用列表({})定义,严格匹配API要求的数组类型(原脚本中Measurements是单个数值2,不符合API的[2]数组格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:15:24