将包含JSON的对象转换为其匹配的类定义

时间:2016-01-13 12:31:03

标签: javascript c# .net json asp.net-web-api

在我的Web API中定义的Controller中,我有这个动作:

[HttpPut]
[Route("api/validation/validate/")]
public IHttpActionResult Validate(FromBody]object instance)
{
    ...
}

参数必须是object类型,因为它是一个应该支持任何类型的单一入口点。

内部将导致此代码:

var personDto = (PersonDto)this.ValidationInfo.Instance;

这不起作用,因为我收到了这个错误:

  

无法将类型为“Newtonsoft.Json.Linq.JObject”的对象强制转换为类型   'PersonDto'。

相反,我试图反序列化:

var person = JsonConvert.DeserializeObject<PersonModel>(this.ValidationInfo.Instance);

但这也不起作用,因为JsonConvert.DeserializeObject需要一个字符串。

我该怎么做才能解决这个问题?

附录

public class ValidationInfo
{
    public string Prefix { get; set; }
    public ValidationContext ValidationContext { get; set; }
    public object Instance { get; set; }
}

public sealed class ValidationContext
{
    public string LanguageCode { get; set; }
    public DossierTypes DossierType { get; set; }
    public RoleTypes RoleType { get; set; }
}

用法

self.ValidateServerAsync = function (entityInstance) {
    var uri = "api/validation/validate/";

    return apiService.Put(uri, entityInstance);
}

以上是自定义编写ValidationService中的函数,使用过的apiService处理$http放置。两者都是AngularJS服务。 (不要认为我需要进入他们,因为他们工作)

0 个答案:

没有答案