JSON.NET序列化在ApiController

时间:2015-07-03 18:49:03

标签: c# unit-testing serialization json.net web-project

我们正在使用JSON.NET来序列化自定义对象。我编写了一个单元测试,成功执行自定义对象的JSON序列化:

// Generate custom object...
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }; // Serializing objects referred to by abstract type, see comment at http://www.tomdupont.net/2014/04/deserialize-abstract-classes-with.html
var json = JsonConvert.SerializeObject(object, settings);
// ...Deserialize object and compare are equal

然而,在我们的APIController中,它处理HTTP请求并具有以下方法:

[HttpPost]
public ActionResult ProfileFile()
{
    // Code to handle HTTP request
}

对生成的自定义对象执行相同的序列化操作,以相同的方式为要序列化的自定义对象中的自定义对象生成System.InvalidCastException流(所有这些都已使用JSON.NET属性标记并拥有自己的通过单元测试)。

什么会导致它在我们的网络项目中表现不同,而它在单元测试中有效?提前谢谢。

1 个答案:

答案 0 :(得分:0)

在不知道您尝试序列化的对象的确切内容的情况下,很难提供准确的解决方案。但是,如果我在你的情况下,我会创建一个代表你的自定义对象的基本类,并尝试序列化它。如果您继续看到该错误,我会开始将JsonIgnore属性添加到类的不同属性中,以查看哪个属性实际导致此失败。这将有助于您缩小问题范围。