将 JSON 响应转换为 Graph.EducationAssignment 对象

Convert JSON response to Graph.EducationAssignment Object

当我尝试将 JSON 响应转换为 Graph.EducationAssignment 根对象时,没有数据。我没有收到任何错误消息,只有一个空对象。

我打电话给/beta/education/classes/{classId}/assignments

HttpResponseMessage response = await HttpClient.GetAsync(webApiUrl);
if (response.IsSuccessStatusCode)
{
    string json = await response.Content.ReadAsStringAsync();

    Microsoft.Graph.EducationAssignment Assignments =
        JsonConvert.DeserializeObject<Microsoft.Graph.EducationAssignment>(json);

    // List<Microsoft.Graph.EducationAssignment> Assignments1 =
    //    JsonConvert.DeserializeObject<List<Microsoft.Graph.EducationAssignment>>(json);
}

由于响应的大小,这里是第一行,它表明赋值保存在一个数组中。

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#education/classes('id')/assignments",
  "value": [
    {
      "classId": "blah-blah",
      "displayName": "The homeless",
      "closeDateTime": null

如果有人能帮助我,我将不胜感激。

你没有描述 Microsoft.Graph.EducationAssignment 长什么样,也没有描述它来自哪里。最可能的问题是您正在尝试将资源集合(包含在 value 中)反序列化为单个对象。

除非您熟悉 OData 和 JSON 序列化,否则我会避免尝试 hand-craft 您自己的 Graph 客户端。使用 Microsoft Graph Beta SDK 会更轻松。 SDK 将为您处理所有这些,您最终会得到更清晰的代码:

var assignments = await graphClient
    .Education
    .Classes["id"]
    .Assignments
    .Request()
    .GetAsync();

var assignment = await graphClient
    .Education
    .Classes["id"]
    .Assignments["id"]
    .Request()
    .GetAsync();