【问题标题】:Deserializing Json with RestSharp to get properties使用 RestSharp 反序列化 Json 以获取属性
【发布时间】:2014-09-03 05:09:45
【问题描述】:

我在使用 RestSharp 从以下 JSON 结果中提取“Id”属性时遇到问题: **这里是 JSON*

{

  "odata.metadata":"Api/v1/$metadata#Folders","odata.count":"1","value":
  [

    {

      "odata.id":"/Api/v1/Folders('c8644e97b4ca4353b5bd74a0cc37588214')","Presentations@odata.navigationLinkUrl":"/Api/v1/Folders('c8644e97b4ca4353b5bd74a0cc37588214')/Presentations","#UpdatePermissions":
      {

        "target":"Api/v1/Folders('c8644e97b4ca4353b5bd74a0cc37588214')/UpdatePermissions"

      }
      ,"Id":"c8644e97b4ca4353b5bd74a0cc37588214","Name":"2013-AAFGSW","Owner":"John Doe","Description":"EPIDEM 150.03, Summer 2013","CreationDate":"2014-06-09T22:00:43","LastModified":"2014-06-09T22:00:43","ParentFolderId":"2f5469c7bdf641878c8baf2988ceeb9a14","Recycled":false,"Type":"Folder"

    }

  ]

}

这是我正在使用的课程:

public class Value
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Owner { get; set; }
    public string Description { get; set; }
    public string CreationDate { get; set; }
    public string LastModified { get; set; }
    public string ParentFolderId { get; set; }
    public bool Recycled { get; set; }
    public string Type { get; set; }
}

public class FolderRoot <T>
{

    public List<Value> value { get; set; }
}

这是请求代码:

                var BuildFolderIdRequest = new RestRequest(Method.GET);
                BuildFolderIdRequest.Resource = string.Format("Folders?$filter=Name eq '{0}'",x.event_locator);
                BuildFolderIdRequest.RequestFormat = DataFormat.Json;
                BuildFolderIdRequest.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
                BuildFolderIdRequest.AddHeader("apikey", ApiKey);
    var Fold = MediasiteClient.Execute<FolderRoot<Value>>(BuildFolderIdRequest);
                Console.WriteLine("The folder content is {0}", Fold.Content);
                Console.WriteLine("The folder Id is {0}", Fold.Data.????);
                Console.ReadKey();

问题是试图提取“Id”——因为我不能用“Fold.Data.Id”来做到这一点,而我只是将“Fold.Data.value”作为我唯一的选择......

【问题讨论】:

  • 如果答案解决了您的问题,请不要忘记将答案标记为已接受。

标签: c# json restsharp


【解决方案1】:

看起来您正在使用 MediaSite 的新 v7 REST API。在执行您的请求之前尝试以下操作:

BuildFolderIdRequest.RootElement = "value";

如果您查看已经使用Fold.Content 收到的原始 JSON 结果,您应该会看到您想要的结果位于名为 value 的节点下。如果没有该映射,反序列化可能无法工作。祝你好运。

【讨论】:

  • 是的,感谢您的回复。使用 value 确实有效——因为我没有意识到该文件夹​​正在返回一个列表......
【解决方案2】:

我认为您需要先从列表中选择一个元素,然后才能从中获取 ID, 喜欢

        Fold.Data[0].Id

这行得通吗?我对反序列化并不太熟悉,但这就是我的样子。

“Folder.Data.value”的类型是列表吗?

【讨论】:

  • 谢谢 -- 不幸的是,这不起作用,因为我试图在“Value”类中提取“Id”的字符串值。
  • 嗨 - 是的,您的解决方案略有变化!当我输入Fold.Data.value[0].Id时,我能够得到它---非常感谢......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
相关资源
最近更新 更多