gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:11 32 4
gpt4 key购买 nike

我有一个 Web api Controller ,我使用了 HttpClient PostAsJsonAsync() 方法;我的对象(Employee)是从基类(Person)继承的,但是在将对象发布到Api之后,对象类型发生了变化(正确反序列化);这是我的类(class):-发送前,Object类型为Employee发送后Object类型为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

最佳答案

Before Sending, the Object type is Employee After Sending, the Object type is Person.

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

如果你想反序列化一个派生类型,你必须在你的 JSON 中传递 $type 标志来指定它应该反序列化到哪个派生类型,使用 JsonSerializerSettings 的 TypeNameHandling 属性:

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

关于c# - HttpClient PostAsJsonAsync 方法无法正常工作(序列化无法正常工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793957/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com