我们收到了以下Odata响应:
"{\r\n \"@odata.context\":\"http://localhost/ApplicationService/model/$metadata#Edm.String\",\"value\":\"{\\\"Messages\\\":[\\\"message 1\\\",\\\"message 2\\\",\\\"message 3\\\",\\\"message 4\\\"],\\\"IsValidEntity\\\":false}\"\r\n}"
现在说我们有一堂课:
public class myValidationResult { public myValidationResult() { Messages = new List(); } public List Messages { get; set; } public bool IsValidEntity { get; set; } }
该类在MyOdataController
班级中使用如下:
public class MyODataController : ODataController { [Authorize(Roles = "Admin")] public async TaskPost(T entity) { myValidationResult vResult = new myValidationResult(); vResult.Messages.Add("message 1"); vResult.Messages.Add("message 2"); vResult.Messages.Add("message 3"); vResult.Messages.Add("message 4"); vResult.IsValidEntity = false; var strResult = JsonConvert.SerializeObject(vResult); var resp = Content(HttpStatusCode.BadRequest, strResult ); return resp; } }
对于消耗此的客户端,我们在类下面创建:
public class OData{ [JsonProperty("odata.context")] public string Metadata { get; set; } public T value { get; set; } }
在我们称为Odata方法的方法中,并将响应存储在“ msg”中:
var resp = msg.Result.Content.ReadAsStringAsync().Result;
resp
是:
"{\r\n \"@odata.context\":\"http://localhost/ApplicationService/model/$metadata#Edm.String\",\"value\":\"{\\\"Messages\\\":[\\\"message 1\\\",\\\"message 2\\\",\\\"message 3\\\",\\\"message 4\\\"],\\\"IsValidEntity\\\":false}\"\r\n}" var odatares = JsonConvert.DeserializeObject>(resp);
但是上面的行给出了错误:
Can not convert value\":\"{\\\"Messages\\\":[\\\"message 1\\\",\\\"message 2\\\",\\\"message 3\\\",\\\"message 4\\\"],\\\"IsValidEntity\\\":false} to <.....namespace......>myValidationResult
请据此提出建议。