0

我有以下 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。我已经尝试了一些方法(如下),但它让我无处可去。所有这些方法最终都返回一个空对象。我有点迷茫为什么会这样。有人有想法么?

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

1 回答 1

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
于 2013-05-08T22:13:52.070 回答