C# 反序列化JSON子文档

C# 反序列化JSON子文档,c#,json,api,rest,serialization,C#,Json,Api,Rest,Serialization,我正在调用JIRA Rest API来接收Worklog对象列表 我收到的JSON看起来像 { "startAt": 0, "maxResults": 1, "total": 1, "worklogs": [ { "self": "http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000", "author": { "self": "http://www.exa

我正在调用JIRA Rest API来接收Worklog对象列表

我收到的JSON看起来像

{
"startAt": 0,
"maxResults": 1,
"total": 1,
"worklogs": [
    {
        "self": "http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000",
        "author": {
            "self": "http://www.example.com/jira/rest/api/2/user?username=fred",
            "name": "fred",
            "displayName": "Fred F. User",
            "active": false
        },
        "updateAuthor": {
            "self": "http://www.example.com/jira/rest/api/2/user?username=fred",
            "name": "fred",
            "displayName": "Fred F. User",
            "active": false
        },
        "comment": "I did some work here.",
        "visibility": {
            "type": "group",
            "value": "jira-developers"
        },
        "started": "2015-08-25T07:43:10.086+0000",
        "timeSpent": "3h 20m",
        "timeSpentSeconds": 12000,
        "id": "100028"
    }
]
}
正如我所说,我想把它列在一个列表中

var json = client.MakeRequest("", password, user);
List<Worklog> myList = JsonConvert.DeserializeObject<List<Worklog>>(json);
如何使反序列化程序忽略这些属性? 谢谢你的帮助

创建一个包含以下属性的“RootObject”类:

public class RootObject 
{
    public int startAt { get; set; }
    public int maxResults { get; set; }
    public int total { get; set; }
    public List<Worklog> worklogs { get; set; }
}
公共类根对象
{
public int startAt{get;set;}
public int maxResults{get;set;}
公共整数总计{get;set;}
公共列表工作日志{get;set;}
}
并反序列化为:

var rootObject = JsonConvert.DeserializeObject<RootObject>(json);
// access rootObject.worklogs
var rootObject=JsonConvert.DeserializeObject(json);
//访问rootObject.worklogs
或者进入已解析的JSON并从那里反序列化:

JObject o = JObject.Parse(json);
JToken worklogsJson = o.SelectToken("worklogs");
var worklogs = worklogsJson.ToObject<List<Worklog>>();
JObject o=JObject.Parse(json);
JToken worklogsJson=o.SelectToken(“worklogs”);
var worklogs=worklogsJson.ToObject();

这两种方式都会导致Newtonsoft.Json.JsonReaderException(其他信息:读取字符串时出错。意外标记:StartObject。路径“worklogs[0].author”)对我来说不会发生。用实际使用的JSON和类更新您的问题。使用了一个自写的Worklog类,而不是(可怕的)Atlassian SDK中的类,现在它可以工作了。非常感谢。
JObject o = JObject.Parse(json);
JToken worklogsJson = o.SelectToken("worklogs");
var worklogs = worklogsJson.ToObject<List<Worklog>>();