C# 4.0 无法使用NewtonSoft.Json反序列化某些tweet
大家好 我正在运行一个使用Twitter流API的C#控制台应用程序。我的代码在下面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
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);
}
}