2013-05-08 273 views
0

我有以下Json,我正在尋找反序列化到TwitterTiles列表(見下文)。反序列化Json到對象列表

JSON:

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

類定義:

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

的問題是,我似乎無法成功反序列化JSON此。我已經嘗試了幾種方法(下面),它讓我無處可去。所有這些方法最終返回一個空對象。我有點失落,爲什麼會發生這種情況。有人有主意嗎?

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

回答

0

你的代碼對我來說確實很好。我運行它,並使用Json.NET v5.4.11對我進行反序列化。我使用的確切程序如下。我認爲問題可能不是反序列化,但是無論您用什麼方法首先檢索JSON都無法正常工作。你是否確認你獲得有效的JSON?如果是這樣,那麼在你試圖反序列化它之前,你的代碼中是否還有其他東西可以歸零?在調試器中執行代碼時會發生什麼?

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

輸出:

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

這實際上工作得很好,我需要改變的唯一事情是我RootObjects列表ID來twitterTile和變戲法似的,它的工作。奇怪的。謝謝您的幫助 ! – 2013-05-09 15:37:21

+0

沒問題,很高興你的工作。 – 2013-05-09 17:29:29