2013-05-03 52 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

相关问题