azure - Azure 函数看不到从 Shopify 正确传递的 JSON 正文
问题描述
我正在为 shopify 商店构建一个基于 Azure 函数应用程序的结帐后流程。这是我第一次在函数的约束下工作。该功能基于powershell。
所以该功能是在本地开发的,为此,我使用 hookbin 复制了 webhook 的 json 主体(从 Shopify 订购/付费),这是一个很棒的工具。然后我在开发它时使用邮递员在函数的本地副本上触发主体。这是 shopifys 示例的片段:
{
"id": 820982911946154500,
"email": "jon@doe.ca",
"closed_at": null,
"created_at": "2021-02-07T20:48:25+00:00",
"updated_at": "2021-02-07T20:48:25+00:00",
"number": 234,
"note": null,
...
}
所以我使用它,似乎很容易。在我的powershell中,我做了一个相当标准的
$RequestBody = $Request.Body | ConvertFrom-JSON
然后我挑选出我需要的东西。
$email_address = $RequestBody.email
当我将 Shopify 和该功能一起加入时,这不起作用。在我收集请求的主体时,我没有得到与 hookbin 相同的东西。
当我尝试转换 json 我得到这个
WARNING: Conversion from JSON failed with error: Unexpected character encountered while parsing value: S. Path '', line 0, position 0.
所以我尝试将正文转储为 $Request.body (在我转换为 json 之前)并得到这个
INFORMATION: System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry
所以,总而言之,我显然没有得到我期望的严格的 JSON。这是我函数的前几行。
param($Request, $TriggerMetadata)
try {
$ErrorActionPreference = "Stop"
Connect-AzAccount -Identity
# $RequestBody = $Request.Body | convertfrom-json
Write-host $Request.Body
我是否错过了一个非常明显的步骤,需要在使用 hookbin 收集尸体时不需要执行的功能中完成?
解决方案
看着输出
Write-host $Request.Body
输出 :
INFORMATION: System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry System.Collections.DictionaryEntry
所以看起来你已经有了字典对象(键值对)。
如果您必须访问email
密钥的值,您可以直接访问它$request.body.email
或$request.body["email"]
在执行上述操作之前,您可以先尝试以下步骤:
了解存在哪些键。相应地访问它们。因此您可以尝试Write-Host $request.body.Keys
转储与字典对象关联的所有键。
推荐阅读
- c - 使用C在内存中实现二维数组
- java - 为什么在 java8 中使用“default”关键字
- sql-server - 添加到数据库时如何将两个道具组合成第三个道具?
- jquery - 使用 jQuery 操作 Raio 值
- android - 寻找一种 GC 友好的方式来频繁替换子字符串
- java - 嵌套 for 循环优化
- bash - 如果 line 和下一行以数字开头,则将文本附加到匹配的行
- r - 带有线型的 R ggplot2 图例
- r - 如何在 R 中使用 gsub 对字符串搜索使用两个条件?
- android - 如果从链接启动,Xamarin Forms WithParentActivityOrWindow 不起作用