HttpClient PostAsJsonAsync方法无法正常工作(序列化无法正常工作)

时间:2015-04-22 09:56:32

标签: c# json serialization asp.net-web-api async-await

我有一个Web api控制器,我使用了HttpClient PostAsJsonAsync()方法;我的对象(Employee)是从基类(Person)继承的,但是在将对象发布到Api之后,对象类型被更改(正确地反序列化); 这是我的课程: - 发送前,对象类型为员工 发送后,对象类型为Person 请参阅附件

public class Person
{
   public Guid Id { get; set; }
   public String Name { get; set; }
}

public class Employee : Person
{
    public int Age { get; set; }
}

public class CreateEmployeeRequest 
{
    public Person Person { get; set; }
}

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

  

发送前,对象类型为发送后的员工,对象类型为人。

那么,序列化工作正常。您的CreateEmployeeRequest对象包含Person对象,而不是员工。这就是你在另一端看到它的原因。

如果您希望能够反序列化派生,那么您必须在JSON中传递$type标志,以使用TypeNameHandling指定应该反序列化的派生类型。 JsonSerializerSettings的属性:

string jsonTypeNameAll =   JsonConvert.SerializeObject(employeeRequest,  Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All
});