我正在尝试从Harvest反序列化数据,但它失败了(没有错误):https://github.com/harvesthq/api#api-json
返回的数据如下所示:
更新
(请参见完整的JSON响应底部)
当我运行以下代码时,输出是一个包含x个帖子的列表,其中每个帖子都包含id = 0。
是否有设置或其他东西可以使其忽略/解析周围的[]?
当我运行以下代码时,输出是一个包含x个帖子的列表,其中每个帖子都包含id = 0。
是否有设置或其他东西可以使其忽略/解析周围的[]?
[DeserializeAs(Name = "project")]
public class Project
{
public int id { get; set; }
//public string name { get; set; }
//[DeserializeAs(Name = "created-at")]
//public DateTime CreatedAt { get; set; }
}
// The following is the methods to request for testing
public List<Project> GetProjects()
{
var request = new RestRequest("projects", Method.GET);
request.RequestFormat = DataFormat.Json;
return Execute<List<Project>>(request);
}
private T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient();
client.BaseUrl = BaseUrl;
client.Authenticator = new HttpBasicAuthenticator(_username, _password);
var response = client.Execute<T>(request);
if (response.ErrorException != null)
{
const string message = "Error retrieving response. Check inner details for more info.";
var exception = new ApplicationException(message, response.ErrorException);
throw exception;
}
return response.Data;
}
从Harvest返回的数据:
[
{
"project": {
"id": 123456,
"client_id": 219854,
"name": "Test proj 1",
"code": "",
"active": false,
"billable": true,
"bill_by": "Tasks",
"cost_budget": null,
"cost_budget_include_expenses": false,
"hourly_rate": null,
"budget": 8,
"budget_by": "project",
"notify_when_over_budget": false,
"over_budget_notification_percentage": 80,
"over_budget_notified_at": null,
"show_budget_to_all": false,
"created_at": "2014-04-03T09:49:00Z",
"updated_at": "2014-07-02T11:45:07Z",
"estimate": 8,
"estimate_by": "project",
"hint_earliest_record_at": "2014-04-03",
"hint_latest_record_at": "2014-04-03",
"notes": ""
}
},
{
"project": {
"id": 234567,
"client_id": 686547,
"name": "Test porj 2",
"code": "",
"active": true,
"billable": true,
"bill_by": "Tasks",
"cost_budget": null,
"cost_budget_include_expenses": false,
"hourly_rate": null,
"budget": 8,
"budget_by": "project",
"notify_when_over_budget": false,
"over_budget_notification_percentage": 80,
"over_budget_notified_at": null,
"show_budget_to_all": false,
"created_at": "2014-04-03T09:48:28Z",
"updated_at": "2014-04-15T20:47:29Z",
"estimate": 8,
"estimate_by": "project",
"hint_earliest_record_at": "2014-04-03",
"hint_latest_record_at": "2014-04-03",
"notes": ""
}
},
{
"project": {
"id": 345678,
"client_id": 987456,
"name": "Test proj 3",
"code": "",
"active": false,
"billable": true,
"bill_by": "Project",
"cost_budget": null,
"cost_budget_include_expenses": false,
"hourly_rate": null,
"budget": 8,
"budget_by": "project",
"notify_when_over_budget": false,
"over_budget_notification_percentage": 80,
"over_budget_notified_at": null,
"show_budget_to_all": false,
"created_at": "2013-04-26T13:21:35Z",
"updated_at": "2014-03-30T18:05:24Z",
"estimate": 8,
"estimate_by": "project",
"hint_earliest_record_at": "2013-04-26",
"hint_latest_record_at": "2013-12-04",
"notes": "Scriblings from meeting ..."
}
}
]