Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对象序列化为Json,并在桌面C#应用程序中添加对象类的根名称?_C#_.net_Json - Fatal编程技术网

如何将对象序列化为Json,并在桌面C#应用程序中添加对象类的根名称?

如何将对象序列化为Json,并在桌面C#应用程序中添加对象类的根名称?,c#,.net,json,C#,.net,Json,假设我有这个目标: var user = new User() { name = "John" }; 当我尝试使用以下代码将此对象作为Json发送到web服务器时: HttpResponseMessage response = await client.PostAsJsonAsync(url, user); 这是发送的json: {name:"John"} 我想插入一个根节点。Json应该如下所示: {user:{name:"John"} 我找到了一个解决方案,但它只适用于web应用

假设我有这个目标:

 var user = new User() { name = "John" };
当我尝试使用以下代码将此对象作为Json发送到web服务器时:

 HttpResponseMessage response = await client.PostAsJsonAsync(url, user);
这是发送的json:

{name:"John"}
我想插入一个根节点。Json应该如下所示:

{user:{name:"John"}

我找到了一个解决方案,但它只适用于web应用程序。对桌面应用有什么想法吗?

使用匿名对象包装您的用户对象,例如

var userObj = new User() { name = "John" };
client.PostAsJsonAsync(url, new { user = userObj });

詹姆斯:你的方法很有效。但仍然不是最好的,因为每次调用该方法时,我都必须指定根的名称,这是一个缺点,会影响我的工作。你还有其他想法吗?@RazvanFlorea如果你愿意的话,你可以创建一个包装器类,但我想说的是,你并没有得到太多。为什么这段代码会出现这么大的问题?例如,如果我想创建一个方法,将要发送的对象和url(将被调用以发送不同对象的方法)作为参数,那么,可能我必须再提供一个参数,即根的名称,这似乎不是很优雅。我正在考虑一个解决方案,它利用发送的对象。在这里,您可以看到ASP.NET应用程序的解决方案: