使用JsonProperty获取财产中的财产

时间:2015-09-17 15:14:02

标签: c# .net json json.net

我使用JSON.Net。

我为预期的Json写了一个强类型表示法:

public BaseClass{
         [JsonProperty("fields")]
        public Fields Fields { get; set; }
}

public class Fields
{
    [JsonProperty("worklog")]
    public List<WorkLog> WorkLog { get; set; }
}

预期Json的样本:

    {
    "baseprop": {
        "fields": {
            "worklog": {
                "startAt": 0,
                "maxResults": 20,
                "total": 2,
                "worklogs": [
                    {
                        "self": "",
                        "author": {},
                        "updateAuthor": {},
                        "comment": "UpdatedcouriersT&C",
                        "created": "2015-09-04T19: 11: 27.169+0300",
                        "updated": "2015-09-04T19: 13: 00.567+0300",
                        "started": "2015-09-04T19: 11: 00.000+0300",
                        "timeSpent": "1h",
                        "timeSpentSeconds": 3600,
                        "id": ""
                    },
                    {
                        "self": "",
                        "author": {},
                        "updateAuthor": {},
                        "comment": "",
                        "created": "2015-09-07T10: 26: 23.549+0300",
                        "updated": "2015-09-07T10: 26: 23.549+0300",
                        "started": "2015-09-07T10: 26: 00.000+0300",
                        "timeSpent": "10m",
                        "timeSpentSeconds": 600,
                        "id": ""
                    }
                ]
            }
        }
    }
}

我如何获得该物业的价值&#34;工作日志&#34;来自&#34; baseprop&#34;元件? 我试过像"[JsonProperty("worklog/worklogs")]"这样的东西,但这不起作用。

JsonProperty是否支持这样的事情?

由于

1 个答案:

答案 0 :(得分:0)

我认为混淆来自于您正试图将JSON的完整结构重新映射到您的班级。

也许您应该考虑的不是反序列化对象,而是使用Linq到Json并手动分配BaseClass对象的属性,如下所示:

var jObject = JObject.Parse(jsonString);
BaseClass bc = new BaseClass()
bc.Assignee = jObject["fields"]["worklog"]["worklogs"].First()["assignee"].Value<string>()