【发布时间】:2015-05-12 22:54:01
【问题描述】:
我有以下简单的类:
public class Test
{
public string property1 { get; set; }
public string property2 { get; set; }
}
当我尝试使用以下方法将其序列化为 JSON 时:
Test t = new Test() { property1 = "p1", property2 = "p2" };
var serializedData = JsonConvert.SerializeObject(t, Formatting.None);
我得到如下所示的 JSON:
当我尝试将它提交到 WEB API 应用程序时,它会显示为 null。我在内容标题中使用application/json。
如果我以字符串开头提交相同的类,它可以正常工作:
string test = "{\"property1\":\"p1\",\"property2\":\"p2\"}";
var serializedData = JsonConvert.SerializeObject(test, Formatting.None);
但在 Visualizer 中看起来像这样:
如果我将两个字符串都粘贴到记事本中,它们看起来完全一样。
关于类序列化不起作用的任何想法?
【问题讨论】:
-
您是从 API 控制器返回它还是从 Java 脚本发布它?当从控制器返回字符串并将其视为 json 时可能会导致麻烦,除非您明确设置内容类型。你能发布你的控制器代码吗?
-
Visual Studio 可能会将事情与过于聪明的转义混淆。要查看字符串的实际内容,请在即时窗口中键入
Debug.WriteLine(serializedData)。您将看到第一个是具有两个属性的 JSON 对象,第二个是 JSON 字符串,其内容是已转义为字符串文字的 JSON 对象。至于为什么第一种情况在服务器上显示为空,您可以分享进行调用的代码吗? -
你是如何将它提交给 WebAPI 的?
-
我正在使用WebClient Upload方法提交并将其设置为POST。
标签: c# json asp.net-mvc visual-studio