C# 4.0 无法使用NewtonSoft.Json反序列化某些tweet

C# 4.0 无法使用NewtonSoft.Json反序列化某些tweet,c#-4.0,twitter,console-application,json.net,jsonlint,C# 4.0,Twitter,Console Application,Json.net,Jsonlint,大家好 我正在运行一个使用Twitter流API的C#控制台应用程序。我的代码在下面 JToken json = JObject.Parse(ResponseStream.ReadLine()); 对于每+-20条tweet,我会收到以下错误“从JsonReader读取JObject时出错” 我将json复制到了中,它是有效的,所以我不明白为什么会发生这种情况。还有其他人犯过这个错误吗?是的,最近才开始发生。我认为这要么是NewtonSoft.Json的一个bug,要么是twitterapi

大家好

我正在运行一个使用Twitter流API的C#控制台应用程序。我的代码在下面

 JToken json = JObject.Parse(ResponseStream.ReadLine());
对于每+-20条tweet,我会收到以下错误“从JsonReader读取JObject时出错”


我将json复制到了中,它是有效的,所以我不明白为什么会发生这种情况。还有其他人犯过这个错误吗?

是的,最近才开始发生。我认为这要么是NewtonSoft.Json的一个bug,要么是twitterapi中的一个变化导致它发送错误的Json。我做了一个数据包捕获,通过计数发现了冒犯的角色,但我没有发现任何错误。我想我们只能等待这个错误被修复

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

我发现了问题。有时流返回一个空字符串。因此,解析空字符串将引发错误。下面是一个关于我如何防范它的示例:

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