繁体   English   中英

如何在不使用扩展名的情况下在Web API 2中传输复杂的类?

[英]How to transfer complex classes in web api 2 without using extensions?

我有点不确定Web api 2中如何转换复杂的类。我发现的每个示例几乎都是关于旧的json post类的(不再存在)。 对于新版本,我找不到太多。 特别是对于复杂的类。 几乎所有这些示例都使用NewtonSoft ...之类的扩展名。

所以我的问题是:对于下面的示例,有什么方法(除了将转换器放入将其转换为字符串然后从字符串转换为类的类的类中)之外,无需依赖扩展即可将其传输到帖子中?

服务器示例:

public async Task<IHttpActionResult> DeviceConnect([FromBody]MyDevice device)
{
     ...... // device is to be used and should be transferred from the client
}

客户示例:

var cont = new MyDevice();

HttpResponseMessage rb = await client.PostAsync(@"http://localhost:34326/Api/Updater", cont);

我已经很累了(自然失败了,因为它只会转换类的名称):

var a1= new MyDevice("MyTestDevice", "a");
var cont = new StringContent(a1.ToString(), Encoding.UTF8, "application/json");

MyDevice具有以下布局:

public class MyDevice
{
    private EnumClient _Client;
    private string _Office;
    private string _DeviceNumber;    
    private List<InstalledProgram> _InstalledPrograms;


    public List<InstalledProgram> InstalledPrograms{ get => _InstalledPrograms; set => _InstalledPrograms= value; }
    public string DeviceNumber { get => _DeviceNumber; set => _DeviceNumber = value; }
    public EnumClient Client { get => _Client; set => _Client = value; }
    public string Office { get => _Office; set => _Office = value; }

}

InstalledPrograms只有几个属性(字符串名称,字符串版本)。

问题是如何序列化类以StringContent发送。 您需要将其序列化为json字符串,而不仅仅是使用ToString方法。 下面的代码使用Newtonsoft.Json nuget包。

var cont = new StringContent(JsonConvert.SerializeObject(a1), Encoding.UTF8, "application/json");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM