2013-05-08 4 views
0

J'ai le Json suivant que je cherche à désérialiser dans une liste de TwitterTiles (voir ci-dessous).Deserializing Json to Object liste

JSON:

{ 
    "twitterTile": 
    [ 
     { 
      "hashtag": "#genoa", 
      "isPositive": true, 
      "dateSearched": "08/05/2013" 
     } 
    ] 
} 

définitions Classe:

public class TwitterTile 
{ 
    public string hashtag { get; set; } 
    public bool isPositive { get; set; } 
    public string dateSearched { get; set; } 
} 

public class RootObject 
{ 
    public List<TwitterTile> twitterTile { get; set; } 
} 

Le problème est que je ne peux pas sembler désérialiser avec succès cette JSON. J'ai essayé quelques méthodes (ci-dessous) et ça ne m'a rien donné. Toutes ces méthodes finissent par retourner un objet nul. Je suis un peu perdu quant à la raison pour laquelle cela arrive. Quelqu'un a des idées?

var des = (RootObject)Newtonsoft.Json.JsonConvert.DeserializeObject(data, typeof(RootObject)); 
RootObject topics = JsonConvert.DeserializeObject<RootObject>(json); 

Répondre

0

Votre code me semble OK. Je l'ai couru et il s'est désérialisé très bien pour moi en utilisant Json.NET v5.4.11. Le programme exact que j'ai utilisé est ci-dessous. Je pense que le problème n'est peut-être pas la désérialisation, mais que la méthode que vous utilisez pour récupérer le JSON ne fonctionne pas. Avez-vous vérifié que vous récupérez un JSON valide? Si oui, y a-t-il quelque chose d'autre dans votre code qui pourrait être annulé avant que vous essayiez de le désérialiser? Que se passe-t-il lorsque vous parcourez votre code dans un débogueur?

class Program 
{ 
    static void Main(string[] args) 
    { 
     string json = 
     @"{ 
      ""twitterTile"": 
      [ 
       { 
        ""hashtag"": ""#genoa"", 
        ""isPositive"": true, 
        ""dateSearched"": ""08/05/2013"" 
       } 
      ] 
     }"; 

     RootObject result = JsonConvert.DeserializeObject<RootObject>(json); 

     foreach(TwitterTile tile in result.twitterTile) 
     { 
      Console.WriteLine("hashtag: " + tile.hashtag); 
      Console.WriteLine("isPositive: " + tile.isPositive); 
      Console.WriteLine("dateSearched: " + tile.dateSearched); 
     } 
    } 

    public class TwitterTile 
    { 
     public string hashtag { get; set; } 
     public bool isPositive { get; set; } 
     public string dateSearched { get; set; } 
    } 

    public class RootObject 
    { 
     public List<TwitterTile> twitterTile { get; set; } 
    } 
} 

Sortie:

hashtag: #genoa 
isPositive: True 
dateSearched: 08/05/2013 
+0

qui fonctionnait vraiment bien, la seule chose que je devais changer était ma RootObjects Liste id twitterTile et hey presto cela a fonctionné. Bizarre. Merci pour l'aide ! –

+0

Pas de problème, content que vous l'ayez fait fonctionner. –