2013-05-03 1 views
0

Je suis en train de GET un objet de ce type (via l'API Web):Ne peut pas sérialiser la propriété dérivée de JSON dans l'API Web

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

Je reçois l'erreur:

« Erreur d'obtention valeur à partir de 'FolderParent' sur 'Domain.Document'. "

+0

À quoi ressemble votre classe Folder. On dirait que vous devez avoir une faute de frappe dans votre exemple parce que vous ne pouvez même pas compiler un dossier public de classe avec un membre du dossier Nom. – cgotberg

+0

Changé les noms déjà, ce n'est pas le code réel réellement – rajeemcariazo

+0

Conseil: donnez un nom différent dans votre méthode parce que vous avez un objet (dossier) avec le même nom. –

Répondre

2

Je mets un petit exemple rapide ensemble et il sérialisé. On dirait que le bogue doit venir de quelque part dans la conception de votre classe FileFolder que nous n'avons pas en ce moment.

[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

Je ne sais pas si c'est JsonConvert qui sérialise, mais je pense que c'est le serializer par défaut (à JSON) dans l'API Web. J'ai mis ces lignes de code dans mon WebApiConfig.cs: var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault (t => t.MediaType == "application/xml"); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove (appXmlType); – rajeemcariazo

+0

Eh bien, vous pouvez certainement prendre le test d'unité que j'ai fourni et l'utiliser avec votre base de code particulier. Si JsonConvert.Serialize fonctionne, nous savons qu'il s'agit d'un problème d'API de configuration/Web. Si elle renvoie la même erreur, nous savons que c'est un problème avec la classe FileFolder. – cgotberg

+0

J'ai essayé et ça a passé. Alors peut-être qu'il y a un problème avec ma configuration de l'API Web – rajeemcariazo

Questions connexes