2013-05-08 169 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