Microsoft Flow 中的解析 JSON 步骤出错
Error in Parse JSON step in Microsoft Flow
抱歉这个问题太长了,但我想把所有 JSON 都包括进来以获得最好的帮助。
我们在从流程中的 HTTP Get 请求解析 JSON 时遇到错误。
这是我们在解析 JSON 步骤中使用的模式:
{
"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"Alerts": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Groups": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Id": {
"type": "integer"
},
"IsHiddenInUI": {
"type": "boolean"
},
"LoginName": {
"type": "string"
},
"Title": {
"type": "string"
},
"PrincipalType": {
"type": "integer"
},
"Email": {
"type": "string"
},
"IsEmailAuthenticationGuestUser": {
"type": "boolean"
},
"IsShareByEmailGuestUser": {
"type": "boolean"
},
"IsSiteAdmin": {
"type": "boolean"
},
"UserId": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
}
},
"NameId": {
"type": "string"
},
"NameIdIssuer": {
"type": "string"
}
}
}
},
"required": [
"__metadata",
"Alerts",
"Groups",
"Id",
"IsHiddenInUI",
"LoginName",
"Title",
"PrincipalType",
"Email",
"IsEmailAuthenticationGuestUser",
"IsShareByEmailGuestUser",
"IsSiteAdmin",
"UserId"
]
}
}
}
}
}
}
我们只对要用于发送批准的电子邮件 属性 感兴趣...
以下是失败的解析 JSON 步骤的输入结果:
{
"d": {
"results": [
{
"__metadata": {
"id": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)",
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)",
"type": "SP.User"
},
"Alerts": {
"__deferred": {
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Alerts"
}
},
"Groups": {
"__deferred": {
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Groups"
}
},
"Id": 1691,
"IsHiddenInUI": false,
"LoginName": "i:0#.f|membership|Surnamei@Company.org.uk",
"Title": "Firstname Surname",
"PrincipalType": 1,
"Email": "Surnamef@Company.org.uk",
"Expiration": "",
"IsEmailAuthenticationGuestUser": false,
"IsShareByEmailGuestUser": false,
"IsSiteAdmin": false,
"UserId": {
"__metadata": {
"type": "SP.UserIdInfo"
},
"NameId": "10033fff9fe67a30",
"NameIdIssuer": "urn:federation:microsoftonline"
},
"UserPrincipalName": "Surnamef@Company.org.uk"
},
}
]
}
这是失败的 JSON 解析 运行 结果的架构:
{
"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"Alerts": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Groups": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Id": {
"type": "integer"
},
"IsHiddenInUI": {
"type": "boolean"
},
"LoginName": {
"type": "string"
},
"Title": {
"type": "string"
},
"PrincipalType": {
"type": "integer"
},
"Email": {
"type": "string"
},
"IsEmailAuthenticationGuestUser": {
"type": "boolean"
},
"IsShareByEmailGuestUser": {
"type": "boolean"
},
"IsSiteAdmin": {
"type": "boolean"
},
"UserId": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
}
},
"NameId": {
"type": "string"
},
"NameIdIssuer": {
"type": "string"
}
}
}
},
"required": [
"__metadata",
"Alerts",
"Groups",
"Id",
"IsHiddenInUI",
"LoginName",
"Title",
"PrincipalType",
"Email",
"IsEmailAuthenticationGuestUser",
"IsShareByEmailGuestUser",
"IsSiteAdmin",
"UserId"
]
}
}
}
}
}
}
这是 运行 历史步骤中的错误:
[
{
"message": "Invalid type. Expected Object but got Null.",
"lineNumber": 0,
"linePosition": 0,
"path": "d.results[3].UserId",
"schemaId": "#/properties/d/properties/results/items/properties/UserId",
"errorType": "type",
"childErrors": []
}
]
那么我怎样才能更改架构以成功检索电子邮件
问题是由于UserId在从HTTP Get接收到的数据的几个元素中为null,而设置为required 在 JSON 模式中...
最初我们通过在 HTTP Get 中使用以下内容解决了这个问题:
_api/web/sitegroups/getbyname('Legal Owners')/users?$filter=UserId+ne+null
然后我们在 Power Platform Community 上得到了更好更优雅的解决方案:
在应用于每个步骤使用:
body('Send_an_HTTP_request_to_SharePoint')?['d']?['results']
和在循环内使用:
item()?['Email']
抱歉这个问题太长了,但我想把所有 JSON 都包括进来以获得最好的帮助。
我们在从流程中的 HTTP Get 请求解析 JSON 时遇到错误。
这是我们在解析 JSON 步骤中使用的模式:
{
"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"Alerts": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Groups": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Id": {
"type": "integer"
},
"IsHiddenInUI": {
"type": "boolean"
},
"LoginName": {
"type": "string"
},
"Title": {
"type": "string"
},
"PrincipalType": {
"type": "integer"
},
"Email": {
"type": "string"
},
"IsEmailAuthenticationGuestUser": {
"type": "boolean"
},
"IsShareByEmailGuestUser": {
"type": "boolean"
},
"IsSiteAdmin": {
"type": "boolean"
},
"UserId": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
}
},
"NameId": {
"type": "string"
},
"NameIdIssuer": {
"type": "string"
}
}
}
},
"required": [
"__metadata",
"Alerts",
"Groups",
"Id",
"IsHiddenInUI",
"LoginName",
"Title",
"PrincipalType",
"Email",
"IsEmailAuthenticationGuestUser",
"IsShareByEmailGuestUser",
"IsSiteAdmin",
"UserId"
]
}
}
}
}
}
}
我们只对要用于发送批准的电子邮件 属性 感兴趣...
以下是失败的解析 JSON 步骤的输入结果:
{
"d": {
"results": [
{
"__metadata": {
"id": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)",
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)",
"type": "SP.User"
},
"Alerts": {
"__deferred": {
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Alerts"
}
},
"Groups": {
"__deferred": {
"uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Groups"
}
},
"Id": 1691,
"IsHiddenInUI": false,
"LoginName": "i:0#.f|membership|Surnamei@Company.org.uk",
"Title": "Firstname Surname",
"PrincipalType": 1,
"Email": "Surnamef@Company.org.uk",
"Expiration": "",
"IsEmailAuthenticationGuestUser": false,
"IsShareByEmailGuestUser": false,
"IsSiteAdmin": false,
"UserId": {
"__metadata": {
"type": "SP.UserIdInfo"
},
"NameId": "10033fff9fe67a30",
"NameIdIssuer": "urn:federation:microsoftonline"
},
"UserPrincipalName": "Surnamef@Company.org.uk"
},
}
]
}
这是失败的 JSON 解析 运行 结果的架构:
{
"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"Alerts": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Groups": {
"type": "object",
"properties": {
"__deferred": {
"type": "object",
"properties": {
"uri": {
"type": "string"
}
}
}
}
},
"Id": {
"type": "integer"
},
"IsHiddenInUI": {
"type": "boolean"
},
"LoginName": {
"type": "string"
},
"Title": {
"type": "string"
},
"PrincipalType": {
"type": "integer"
},
"Email": {
"type": "string"
},
"IsEmailAuthenticationGuestUser": {
"type": "boolean"
},
"IsShareByEmailGuestUser": {
"type": "boolean"
},
"IsSiteAdmin": {
"type": "boolean"
},
"UserId": {
"type": "object",
"properties": {
"__metadata": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
}
},
"NameId": {
"type": "string"
},
"NameIdIssuer": {
"type": "string"
}
}
}
},
"required": [
"__metadata",
"Alerts",
"Groups",
"Id",
"IsHiddenInUI",
"LoginName",
"Title",
"PrincipalType",
"Email",
"IsEmailAuthenticationGuestUser",
"IsShareByEmailGuestUser",
"IsSiteAdmin",
"UserId"
]
}
}
}
}
}
}
这是 运行 历史步骤中的错误:
[
{
"message": "Invalid type. Expected Object but got Null.",
"lineNumber": 0,
"linePosition": 0,
"path": "d.results[3].UserId",
"schemaId": "#/properties/d/properties/results/items/properties/UserId",
"errorType": "type",
"childErrors": []
}
]
那么我怎样才能更改架构以成功检索电子邮件
问题是由于UserId在从HTTP Get接收到的数据的几个元素中为null,而设置为required 在 JSON 模式中...
最初我们通过在 HTTP Get 中使用以下内容解决了这个问题:
_api/web/sitegroups/getbyname('Legal Owners')/users?$filter=UserId+ne+null
然后我们在 Power Platform Community 上得到了更好更优雅的解决方案:
在应用于每个步骤使用:
body('Send_an_HTTP_request_to_SharePoint')?['d']?['results']
和在循环内使用:
item()?['Email']