我有一个使用 Azure AD Graph API 的 ASP.NET 应用程序。通常,当对 Graph API 执行无效操作时,会引发异常。
以下代码显示了会触发异常的无效 Graph API 调用:
// Query the Azure AD User
var userToUpdate = await activeDirectoryClient.Users.GetByObjectId("user@domain.net").ExecuteAsync();
// Set given name to an empty string (not allowed)
userToUpdate.GivenName = "";
try
{
// Update the user in Azure AD
await userToUpdate.UpdateAsync();
}
catch (Exception e)
{
// Return exception message
}
内部异常的消息是一个 JSON 字符串,每个引号前带有正斜杠。它看起来像这样:
"{\"odata.error\":{\"code\":\"Request_BadRequest\",\"message\":{\"lang\":\"en\",\"value\":\"Invalid value specified for property 'givenName' of resource 'User'.\"},\"values\":[{\"item\":\"PropertyName\",\"value\":\"givenName\"},{\"item\":\"PropertyErrorCode\",\"value\":\"InvalidValue\"}]}}"
我想将此 JSON 转换为 .NET 对象以返回信息丰富的错误详细信息。我为此使用了 JSON.NET 库,并且我假设 JSON 将反序列化为一个ODataError
对象:
var error = Newtonsoft.Json.JsonConvert.DeserializeObject<ODataError>(e.InnerException.Message);
但是,反序列化对象的值始终为null
,这意味着转换未按预期工作。
话虽如此,上面的 JSON 字符串应该映射到什么类?另外,我应该从字符串中删除正斜杠以进行正确的反序列化吗?