无法使用NewtonSoft.Json反序列化一些推文

时间:2012-02-03 08:19:32

标签: c#-4.0 twitter console-application json.net jsonlint

大家好,

我正在运行使用Twitter Stream API的C#控制台应用。我的代码在

之下
 JToken json = JObject.Parse(ResponseStream.ReadLine());

对于每个+ - 20条推文,我收到以下错误“从JsonReader读取JObject时出错”。

我将json复制到JSONLint并且它是有效的,所以我很困惑为什么这种情况一直在发生。还有其他人有这个错误吗?

2 个答案:

答案 0 :(得分:0)

是的,它刚刚开始发生。我相信这可能是NewtonSoft.Json的一个错误,也可能是twitter api的变化导致它发送错误的jsons。我做了一个数据包捕获并通过计算它们找到了令人讨厌的字符,但我没有看到任何错误。我想我们只需要等待修复这个错误。

<强>更新 我将Newtonsoft.Json.dll降级为4.3。*并且工作正常。

答案 1 :(得分:0)

我发现了这个问题。有时,流返回一个空字符串。因此,解析空字符串将引发错误。以下是我如何保护它的例子:

public static void ProccessTweet(object objMessage)
    {
        if(objMessage.ToString() != "")
        {
            var json = JObject.Parse(objMessage.ToString());
            if (json["retweeted_status"] == null)
            {
                var message = ProcessNewTweet(json);
                Db.Votes.Add(new FNBVote
                {
                    Message = message,
                    Entry = Db.Entries.Find(message.Entry.EntryId)
                });

                return;
            }

            ProcessRetweet(json);
        }
    }