【问题标题】:Error in Parse JSON step in Microsoft FlowMicrosoft Flow 中解析 JSON 步骤中的错误
【发布时间】:2019-12-11 03:38:04
【问题描述】:

抱歉这个问题太长了,但我想包含所有 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"
      },
      }
    ]
  }

以下是 Parse 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": []
  }
]

那么如何更改架构以成功检索电子邮件

【问题讨论】:

  • JSON Schema 用于验证。您看到的错误消息是说您正在测试的数据根据​​架构无效。 path 的值是 Null 而不是对象。我建议你看看你的数据。

标签: json jsonschema power-automate


【解决方案1】:

问题是由于 UserId 在从 HTTP Get 接收到的数据的几个元素中为 null,而在 JSON Schema 中设置为 required...

最初我们通过在 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']

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 2012-12-02
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2015-12-14
    • 2014-07-18
    • 2014-04-10
    相关资源
    最近更新 更多