从C#中的Graph API查询中提取数据

时间:2017-02-19 22:00:10

标签: json azure-ad-graph-api

我在AAD上查询图谱API以获取组成员资格信息。从这里,我得到一个包含用户所属的一个或多个组的JSON字符串。我知道我可以对一个结构进行反向工程并对其进行反序列化,但是我可以利用某种契约来使用Graph API结构吗?

我找到了针对获取原始字符串数据的Graph API的查询示例,但我确实可以使用一个简单的示例,其中某人提取原始信息(例如,组ID或组名称)并在结构中使用它

1 个答案:

答案 0 :(得分:0)

创建一个用户类,如下所示

public class ActiveDirectoryUser  
    {
        public bool accountEnabled { get; set; }
        public List<SignInName> signInNames { get; set; }
        public string creationType { get; set; }
        public string displayName { get; set; }
        public string mailNickname { get; set; }

        [JsonProperty("passwordProfile", NullValueHandling = NullValueHandling.Ignore)]
        public PasswordProfile PasswordProfile { get; set; }

        [JsonProperty("passwordPolicies", NullValueHandling = NullValueHandling.Ignore)]
        public string PasswordPolicies { get; set; }

        public string city { get; set; }
        public object country { get; set; }
        public object facsimileTelephoneNumber { get; set; }
        public string givenName { get; set; }
        public object mail { get; set; }
        public object mobile { get; set; }
        //public List<object> otherMails { get; set; }
        public string postalCode { get; set; }
        public object preferredLanguage { get; set; }
        public string state { get; set; }
        public object streetAddress { get; set; }
        public string surname { get; set; }
        public Guid objectId { get; set; }
        public object telephoneNumber { get; set; }


    }

    public class SignInName
    {
        public string type { get; set; }
        public string value { get; set; }
    }

    public class PasswordProfile
    {
        public string password { get; set; }
        public bool forceChangePasswordNextLogin { get; set; }
    }

从AD获取响应时,使用newtonsoft.json序列化到相应的类,如下所示。

var response = await httpClient.SendAsync(request);

if (response.IsSuccessStatusCode)
{
   var result = response.Content.ReadAsStringAsync().Result;                                           
   return JsonConvert.DeserializeObject<ActiveDirectoryUser>(result);
}

Trick是JsonConvert.DeserializeObject&lt;&gt;(结果);