2013-05-03 49 views
0

我試圖讓這個類型的對象(通過Web API):不能派生屬性序列化爲JSON在網頁API

public class Document 
{ 
    public int Id { get; set; } 
    public FileFolder Folder { get; set; } 
    public FileFolder FolderParent 
    { 
     get 
     { 
      return FileFolder.Folder; 
     } 
    } 
} 

我收到錯誤:

「錯誤獲取價值從'Domain.Document'上的'FolderParent'。「

+0

你的Folder類是什麼樣的。好像你必須在你的例子中有一個錯字,因爲你甚至不能用一個名字爲Folder的成員來編譯一個類公用文件夾。 – cgotberg 2013-05-03 15:18:59

+0

已更改名稱,這實際上不是實際的代碼 – rajeemcariazo 2013-05-03 15:24:55

+0

建議:在您的方法中給出不同的名稱,因爲您的對象(文件夾)具有相同的名稱。 – 2013-05-03 15:27:56

回答

2

我把一個快速的小例子放在一起,它很好的序列化。似乎錯誤必須來自我們現在沒有的FileFolder類的設計中的某個地方。

[TestClass] 
public class UnitTest8 
{ 
    [TestMethod] 
    public void TestJasonFileFolder() 
    { 
     var folder = new FileFolder(); 
     folder.Folder = new FileFolder { Name = "Parent" }; 
     folder.Name = "Something"; 

     var document = new Document { Folder = folder, Id = 1 }; 

     var test = JsonConvert.SerializeObject(document); 
     Assert.IsNotNull(test); 
    } 
} 

public class Document 
{ 
    public int Id { get; set; } 
    public FileFolder Folder { get; set; } 
    public FileFolder FolderParent 
    { 
     get 
     { 
      return this.Folder.Folder; 
     } 
    } 
} 

public class FileFolder 
{ 
    public string Name { get; set; } 
    public FileFolder Folder { get; set; } 
} 
+0

我不知道它是否是序列化的JsonConvert,但我認爲它是Web API中的默認序列化程序(對於JSON)。我把這行代碼放在我的WebApiConfig.cs中:var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType ==「application/xml」); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); – rajeemcariazo 2013-05-03 15:45:01

+0

那麼你當然可以參加我提供的單元測試,並將它與你特定的代碼庫一起使用。如果JsonConvert.Serialize有效,那麼我們知道這是一個配置/ Web API問題。如果它拋出同樣的錯誤,那麼我們知道這是FileFolder類的某種問題。 – cgotberg 2013-05-03 16:01:16

+0

我試過了,它通過了。所以也許我的Web API配置有問題 – rajeemcariazo 2013-05-03 16:08:49

相關問題