我使用JsonConvert.SerializeObject获得了非常奇怪的行为。
我的方法如下:
public class ServiceController : ApiController
{
public object GetJSONConnectedResponse(object input)
{
return JsonConvert.SerializeObject(input, Formatting.Indented,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});
}
public object GetMediaGallery(int? id)
{
try
{
return GetJSONConnectedResponse(GalleryBLL.GetMediaGallery(id));
}
catch (Exception exc)
{
LogBLL.LogException(exc, HttpContext.Current.Request.RawUrl);
return null;
}
}
}
如您所见,我使用MVC Web API作为服务应用程序,我在客户端使用javascript查询ajax类型的数据。
方法GetMediaGallery返回以下结构的holder类:
public class MediaGalleryHolder
{
public List<DB_Image> Images { get; set; }
public List<string> SpinFrames { get; set; }
public string FlyoverVideo { get; set; }
}
DB_Images是一个复杂的实体,我通过调用存储过程来填充业务逻辑方法。在这个复杂的实体上,我添加了2个额外的属性。
public partial class DB_Image
{
public string FullPath { get; set; }
public string ThumbPath { get; set; }
}
出于某种原因,在我的本地计算机上,结果正确序列化(添加了2个额外的属性),但在服务器上,这些额外的属性不会添加到结果中(我知道它们已填充,但从未序列化)。
这是某种JSON.NET或MVC Web API版本问题,我该如何解决或解决此问题?
非常感谢任何帮助!
最佳,
tribe84
答案 0 :(得分:0)
您是否尝试过每个课程的注释? 你可以尝试添加[Serializable]
[Serializable]
public partial class DB_Image
{
public string FullPath { get; set; }
public string ThumbPath { get; set; }
}
[Serializable]
public class MediaGalleryHolder
{
public List<DB_Image> Images { get; set; }
public List<string> SpinFrames { get; set; }
public string FlyoverVideo { get; set; }
}
希望它有所帮助!