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

PowerShell调用Shopify API后ConvertTo-Json输出转义异常如何排查

Shopify PowerShell拉取数据返回转义JSON问题排查方案

问题根因

你遇到的不是Shopify数据流本身有问题,返回内容里的大量反斜杠是JSON对象被二次序列化的典型表现。原本已经是JSON格式的字符串被再次传入ConvertTo-Json时,PowerShell会自动对字符串内的双引号、斜杠做转义处理,就会出现你看到的\"、\/这类字符。

排查清单

  • 排查-FollowRelLink返回结构:你使用的-FollowRelLink参数会在返回数据超过1页时,将所有页的响应以数组形式返回。如果之前只有1页数据,返回的是单个PSCustomObject,直接序列化正常;当数据超过1页后,数组中如果混入未被自动反序列化的原始JSON字符串,再次序列化就会产生转义。你可以执行$products | ForEach-Object {$_.GetType().Name}查看每个返回元素的类型,确认是否存在String类型的元素。
  • 排查序列化深度配置:你当前使用的-Depth 5只支持最多5层嵌套的对象序列化,Shopify订单数据的嵌套层级(比如line_items下的属性、customer下的地址等)很容易超过5层,超过深度的对象会被PowerShell直接转为字符串,再次序列化也会产生转义。
  • 排查响应Content-Type配置:你代码中传入的-ContentType是请求头参数,GET请求无需配置该参数。如果Shopify某页响应的Content-Type不是application/json,Invoke-RestMethod不会自动做反序列化,会直接返回原始JSON字符串,后续序列化就会出现转义。你可以替换为Invoke-WebRequest拉取单页数据,查看响应头的Content-Type字段是否符合预期。
  • 排查API版本状态:你使用的2021-10版本API已经结束生命周期,可进入Shopify后台「应用和销售渠道」-「开发应用」查看你使用的私钥绑定的API版本是否被强制升级,版本变更会直接改变返回结构。

Shopify返回格式调整的触发条件

并不是只有API版本变更才会调整返回格式,以下场景也会导致返回结构变化:

  • 店铺开通新功能(如多币种结算、多点位库存、新结账流程),订单新增字段或嵌套层级变高
  • API权限被调整,部分字段返回被限制
  • Shopify边缘节点缓存异常,偶发返回格式异常的响应

修复代码示例

$uri = "https://yourshop.myshopify.com/admin/api/2021-10/orders.json?limit=250"
$apikey = ""
$password = ""
$headers = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($apikey+":"+$password))}
$responses = Invoke-RestMethod -Uri $uri -FollowRelLink -Method Get -Header $headers -MaximumFollowRelLink 5

# 合并多页订单数据,兼容字符串类型的响应
$allOrders = @()
foreach ($page in $responses) {
    if ($page -is [string]) {
        $pageObj = $page | ConvertFrom-Json
        $allOrders += $pageObj.orders
    } else {
        $allOrders += $page.orders
    }
}

# 提高序列化深度到10,避免层级截断
@{orders = $allOrders} | ConvertTo-Json -Depth 10 | Out-File C:\json\orders_merged.json -Encoding utf8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:36:03