2012-11-19 25 views
0

我使用JsonConvert.SerializeObject得到很奇怪的行爲。使用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返回一個保持器類中的下列結構組成:

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

您是否檢查是否從服務器上的存儲過程中獲取數據? – Suhas

+0

是的,它的字面上相同的代碼,連接到同一個數據庫(來自不同的服務器)。 – tribe84

+0

你確定你已經安裝了相同版本的MVC?你確定它是你的應用程序正在使用的嗎? – Chris

回答

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; } 
    } 

希望它能幫助!

相關問題