将Json反序列化为对象列表

时间:2013-05-08 19:53:28

标签: windows-runtime json.net

我有以下Json,我希望反序列化为TwitterTiles列表(见下文)。

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。我尝试了一些方法(下面),它让我无处可去。所有这些方法最终都返回一个null对象。我有点迷失为什么会发生这种情况。有人有什么想法吗?

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

1 个答案:

答案 0 :(得分: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