Не удается десериализовать некоторые твиты с помощью NewtonSoft.Json - PullRequest
1 голос
/ 03 февраля 2012

Привет всем,

Я запускаю консольное приложение C #, которое использует API-интерфейс Twitter Stream.Мой код ниже

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

Для каждого + - 20 твитов, я получаю следующую ошибку «Ошибка чтения JObject из JsonReader».

Я скопировал JSON в JSONLint и это действительно так, поэтому я озадачен тем, почему это происходит.У кого-нибудь еще была эта ошибка?

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Я нашел проблему. Иногда поток возвращает пустую строку. Поэтому анализ пустой строки приведет к ошибке. Пример ниже о том, как я защитился от этого:

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);
        }
    }
0 голосов
/ 13 марта 2012

Да, и это только начало происходить в последнее время. Я считаю, что это либо ошибка в NewtonSoft.Json, либо изменение в твиттер-интерфейсе, из-за которого он посылает плохих jsons. Я сделал захват пакета и нашел оскорбительного персонажа, посчитав их, но я не увидел ничего плохого. Я думаю, нам просто нужно подождать, пока эта ошибка будет исправлена.

обновление Я понизил Newtonsoft.Json.dll до 4.3. *, И он отлично работает.

...